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错误和解决方法汇总整理
Jun 03 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
python爬虫面试宝典(常见问题)
Mar 02 Python
解决Django一个表单对应多个按钮的问题
Jul 18 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
Pycharm自带Git实现版本管理的方法步骤
Sep 18 Python
python飞机大战游戏实例讲解
Dec 04 Python
Python中request的基本使用解决乱码问题
Apr 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
php中的MVC模式运用技巧
2007/05/03 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
JavaScript基础知识之数据类型
2012/08/06 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
python 将字符串转换成字典dict
2013/03/24 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
Python 2/3下处理cjk编码的zip文件的方法
2019/04/26 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
类的返射机制中的包及核心类
2016/09/12 面试题
公司请假条格式
2014/04/11 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
党支部创先争优承诺书
2014/08/30 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript