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实现获取域名所用服务器的真实IP
Oct 25 Python
深入理解python中的浅拷贝和深拷贝
May 30 Python
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
Django框架视图介绍与使用详解
Jul 18 Python
Django时区详解
Jul 24 Python
在django admin中添加自定义视图的例子
Jul 26 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
python 三边测量定位的实现代码
Apr 22 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页面运行时间的函数介绍
2013/07/01 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
php格式化json函数示例代码
2016/05/12 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
javascript中动态函数用法实例分析
2015/05/14 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
python发腾讯微博代码分享
2014/01/10 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
大学生求职中的自我评价
2013/10/01 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
运动会开幕式致辞
2015/07/29 职场文书
小学语文教师研修感悟
2015/11/18 职场文书