Python实现文件压缩和解压的示例代码


Posted in Python onAugust 12, 2020

大家可能都熟悉.zip格式的文件。它可以把多个文件,压缩成一个文件。这在网络上传输时很有用,而且节省硬盘空间。

接下来,我们使用Python实现压缩和解压。

读取ZIP文件信息

要读取ZIP文件的内容,首先必须创建一个ZipFile对象。ZipFile对象在概念上与File对象相似。

要创建一个 ZipFile 对象,就调用 zipfile.ZipFile()函数,向它传入一个字符串,表示.zip 文件的文件名。 请注意,zipfile 是 Python 模块的名称,ZipFile()是函数的名称。

import zipfile

# 传入压缩文件zfile.zip获取相关信息
zip_file = zipfile.ZipFile('zfile.zip')

# 获取压缩文件中的内容
f_content = zip_file.namelist()

# 压缩前的大小
f_size = zip_file.getinfo('zfile/a.txt').file_size

# 压缩后的大小
c_size = zip_file.getinfo('zfile/a.txt').compress_size

ZipFile 对象有一个 namelist()方法,返回 ZIP 文件中包含的所有文件和文件夹 的字符串的列表。这些字符串可以传递给 ZipFile 对象的 getinfo()方法,返回一个关 于特定文件的 ZipInfo 对象。ZipInfo 对象有自己的属性,诸如表示字节数的 file_size 和 compress_size,它们分别表示原来文件大小和压缩后文件大小。ZipFile 对象表示 整个归档文件,而 ZipInfo 对象则保存该归档文件中每个文件的有用信息。

从 ZIP 文件中解压缩

ZipFile 对象的 extractall()方法从 ZIP 文件中解压缩所有文件和文件夹,放到当 前工作目录中。

import zipfile

zip_file = zipfile.ZipFile('zfile.zip')
# 解压
zip_extract = zip_file.extractall()
zip_extract.close()

运行这段代码后, example.zip 的内容将被解压缩到 C:\。 或者, 你可以向 extractall()传递的一个文件夹名称,它将文件解压缩到那个文件夹,而不是当前工作 目录。如果传递给 extractall()方法的文件夹不存在,它会被创建。例如,如果你用 exampleZip.extractall('C:\ delicious')取代处的调用,代码就会从 example.zip 中解压 缩文件,放到新创建的 C:\delicious 文件夹中。
ZipFile 对象的 extract()方法从 ZIP 文件中解压缩单个文件。

创建和添加到 ZIP 文件

要创建你自己的压缩 ZIP 文件,必须以“写模式”打开 ZipFile 对象,即传入'w' 作为第二个参数(这类似于向 open()函数传入'w',以写模式打开一个文本文件)。

如果向 ZipFile 对象的 write()方法传入一个路径,Python 就会压缩该路径所指 的文件,将它加到 ZIP 文件中。write()方法的第一个参数是一个字符串,代表要添 加的文件名。第二个参数是“压缩类型”参数,它告诉计算机使用怎样的算法来压 缩文件。可以总是将这个值设置为 zipfile.ZIP_DEFLATED(这指定了 deflate 压缩 算法,它对各种类型的数据都很有效)。

import zipfile

zip_file = zipfile.ZipFile('new.zip','w')
# 把zfile整个目录下所有内容,压缩为new.zip文件
zip_file.write('zfile',compress_type=zipfile.ZIP_DEFLATED)
# 把c.txt文件压缩成一个压缩文件
# zip_file.write('c.txt',compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()

这段代码将创建一个新的 ZIP 文件,名为 new.zip,它包含 spam.txt 压缩后的内容。
要记住,就像写入文件一样,写模式将擦除 ZIP 文件中所有原有的内容。如果 只是希望将文件添加到原有的 ZIP 文件中,就要向 zipfile.ZipFile()传入'a'作为第二 个参数,以追加模式打开 ZIP 文件。

以上就是Python实现文件压缩和解压的示例代码的详细内容,更多关于python 压缩和解压的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
Python3基于sax解析xml操作示例
May 22 Python
解读python如何实现决策树算法
Oct 11 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
python同步windows和linux文件
Aug 29 Python
python+pygame实现坦克大战
Sep 10 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
keras分类之二分类实例(Cat and dog)
Jul 09 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 Python
bat批处理之字符串操作的实现
Mar 16 Python
Python爬取数据并实现可视化代码解析
Aug 12 #Python
Python下载网易云歌单歌曲的示例代码
Aug 12 #Python
Python爬取12306车次信息代码详解
Aug 12 #Python
Python读取xlsx数据生成图标代码实例
Aug 12 #Python
Idea安装python显示无SDK问题解决方案
Aug 12 #Python
Python selenium如何打包静态网页并下载
Aug 12 #Python
Python selenium爬取微信公众号文章代码详解
Aug 12 #Python
You might like
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
php blowfish加密解密算法
2016/07/02 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
关于this和self的使用说明
2010/08/01 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
js实现内置计时器
2019/12/16 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
Python中用于返回绝对值的abs()方法
2015/05/14 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
Python实现GIF图倒放
2020/07/16 Python
Python 读取位于包中的数据文件
2020/08/07 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
小学数学国培感言
2014/03/10 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
建设工地安全标语
2014/06/07 职场文书
电影地道战观后感
2015/06/04 职场文书
校运会通讯稿
2015/07/18 职场文书
银行服务理念口号
2015/12/25 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python