Python ZipFile模块详解


Posted in Python onNovember 01, 2013

Python zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了。ZipFile是主要的类,用来创建和读取zip文件而ZipInfo是存储的zip文件的每个文件的信息的。
比如要读取一个Python zipfile 模块,这里假设filename是一个文件的路径:

import zipfile  
z =zipfile.ZipFile(filename, 'r') 
# 这里的第二个参数用r表示是读取zip文件,w是创建一个zip文件  
for f in z.namelist(): 
print f

上面的代码是读取一个zip压缩包里所有文件的名字。z.namelist() 会返回压缩包内所有文件名的列表。
再看看下面一个:
import zipfile  
z = zipfile.ZipFile(filename, 'r')  
for i in z.infolist():  
print i.file_size, i.header_offset

这里使用了z.infolist(), 它返回的就是压缩包内所有文件的信息,就是一个ZipInfo的列表。一个ZipInfo对象中包含了压缩包内一个文件的信息,其中比较常用的是 filename, file_size, header_offset, 分别为文件名,文件大小,文件数据在压缩包中的偏移。其实之前的z.namelist()就是读取的ZipInfo中的filename,组成一个 list返回的。
从压缩包里解压缩出一个文件的方法是使用ZipFile的read方法:
import zipfile  
 z = zipfile.ZipFile(filename, 'r')  
print z.read(z.namelist()[0])

这样就读取出z.namelist()中的第一个文件,并且输出到屏幕,当然也可以把它存储到文件。下面是创建zip压缩包的方法,与读取的方法其实很类似的:
import zipfile, os  
 z = zipfile.ZipFile(filename, 'w') 
# 注意这里的第二个参数是w,这里的filename是压缩包的名字

假设要把一个叫testdir中的文件全部添加到压缩包里(这里只添加一级子目录中的文件):
if os.path.isdir(testdir):  
     for d in os.listdir(testdir):  
         z.write(testdir+os.sep+d)  
         # close() 是必须调用的!  
         z.close()

面的代码非常的简单。想想还有一个问题,如果我把一个test/111.txt 添加到压缩包里之后我希望在包里它放到test22/111.txt怎么办呢?其实这个就是Python ZipFile模块的write方法中第二个参数的作用了。只需要这样调用:
z.write("test/111.txt", "test22/111.txt") 

以上就是我们为大家介绍的有关Python ZipFile模块的相关知识。
Python 相关文章推荐
python使用urllib2实现发送带cookie的请求
Apr 28 Python
Python实现简易端口扫描器代码实例
Mar 15 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
python定位xpath 节点位置的方法
Aug 27 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
Python插入Elasticsearch操作方法解析
Jan 19 Python
Python对象的属性访问过程详解
Mar 05 Python
Python xlrd excel文件操作代码实例
Mar 10 Python
python 链接sqlserver 写接口实例
Mar 11 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
May 19 Python
python定时截屏实现
Nov 02 Python
Python txt文件如何转换成字典
Nov 03 Python
python标准日志模块logging的使用方法
Nov 01 #Python
python类定义的讲解
Nov 01 #Python
用实例说明python的*args和**kwargs用法
Nov 01 #Python
python操作MongoDB基础知识
Nov 01 #Python
python操作MySQL数据库具体方法
Oct 28 #Python
Python sys.path详细介绍
Oct 17 #Python
python开发的小球完全弹性碰撞游戏代码
Oct 15 #Python
You might like
在PHP中操作Excel实例代码
2010/04/29 PHP
pdo中使用参数化查询sql
2011/08/11 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
基于BootStrap实现简洁注册界面
2017/07/20 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
Python 解码Base64 得到码流格式文本实例
2020/01/09 Python
基于python图像处理API的使用示例
2020/04/03 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
纯css3制作煽动翅膀的蝴蝶的示例
2018/04/23 HTML / CSS
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
新员工欢迎词
2014/01/12 职场文书
社区庆中秋节活动方案
2014/02/07 职场文书
义诊活动总结
2015/02/04 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
python通过opencv调用摄像头操作实例分析
2021/06/07 Python