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中的reduce内建函数使用方法指南
Aug 31 Python
python持久性管理pickle模块详细介绍
Feb 18 Python
在Python中使用PIL模块处理图像的教程
Apr 29 Python
基于进程内通讯的python聊天室实现方法
Jun 28 Python
Python 中的lambda函数介绍
Oct 10 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
Python3进制之间的转换代码实例
Aug 24 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
keras读取h5文件load_weights、load代码操作
Jun 12 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php下删除字符串中HTML标签的函数
2008/08/27 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
jQuery的学习步骤
2011/02/23 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
Python heapq使用详解及实例代码
2017/01/25 Python
OpenCV实现人脸识别
2017/04/07 Python
python进行文件对比的方法
2018/12/24 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
Python如何实现邮件功能
2020/05/27 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
英国团购网站:Groupon英国
2017/11/28 全球购物
生物制药毕业生自荐信
2013/10/16 职场文书
人力资源管理专业学生自我评价
2013/11/20 职场文书
中考标语大全
2014/06/05 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
Python图像处理库PIL详细使用说明
2022/04/06 Python