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使用xauth方式登录饭否网然后发消息
Apr 11 Python
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
Python中字典的基本知识初步介绍
May 21 Python
Python实现的生成格雷码功能示例
Jan 24 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
Opencv常见图像格式Data Type及代码实例
Nov 02 Python
编写python程序的90条建议
Apr 14 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 Python
Python如何让字典保持有序排列
Apr 29 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
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
javascript 兼容各个浏览器的事件
2015/02/04 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
Python之reload流程实例代码解析
2018/01/29 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
环境科学专业个人求职信
2013/12/15 职场文书
核心价值观演讲稿
2014/05/13 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
见习报告的格式
2014/11/04 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书