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实现超简单端口转发的方法
Mar 13 Python
python实现bucket排序算法实例分析
May 04 Python
Python简单计算文件夹大小的方法
Jul 14 Python
老生常谈Python基础之字符编码
Jun 14 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
python实现自动登录
Sep 17 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
Oct 22 Python
python常用排序算法的实现代码
Nov 08 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 Python
Matplotlib配色之Colormap详解
Jan 05 Python
教你使用Python pypinyin库实现汉字转拼音
May 27 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
简单的页面缓冲技术
2006/10/09 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
微信支付的开发流程详解
2016/09/13 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
JS中递归函数
2016/06/17 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
Vue infinite update loop的问题解决
2019/04/23 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
Python入门篇之编程习惯与特点
2014/10/17 Python
Python入门篇之数字
2014/10/20 Python
python基于phantomjs实现导入图片
2016/05/13 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
社会实践先进工作者事迹材料
2014/05/06 职场文书
校运动会广播稿300字
2014/10/07 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
建房合同协议书
2016/03/21 职场文书