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数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
python爬取各类文档方法归类汇总
Mar 22 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
使用Python制作简单的小程序IP查看器功能
Apr 16 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
Django使用Channels实现WebSocket的方法
Jul 28 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
tensorflow常用函数API介绍
Apr 19 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
python 牛顿法实现逻辑回归(Logistic Regression)
Oct 15 Python
python运行脚本文件的三种方法实例
Jun 25 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
PHP个人网站架设连环讲(二)
2006/10/09 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
php 类自动载入的方法
2015/06/03 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
jquery获取复选框被选中的值
2014/03/22 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
2015/08/13 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
深入理解Python中的元类(metaclass)
2015/02/14 Python
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
python轮询机制控制led实例
2020/05/03 Python
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
函数指针的定义是什么
2016/08/14 面试题
教师自我评价范文
2013/12/16 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书