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正则中最短匹配实现代码
Jan 16 Python
python抽取指定url页面的title方法
May 11 Python
python编程使用协程并发的优缺点
Sep 20 Python
基于python if 判断选择结构的实例详解
May 06 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
python实现小世界网络生成
Nov 21 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
Python threading.local代码实例及原理解析
Mar 16 Python
Python环境下安装PyGame和PyOpenGL的方法
Mar 25 Python
python实点云分割k-means(sklearn)详解
May 28 Python
pandas 操作 Excel操作总结
Mar 31 Python
Python 操作pdf pdfplumber读取PDF写入Exce
Aug 14 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文件上传的例子及参数详解
2013/12/12 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
PHP7.0版本备注
2015/07/23 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
python获取文件扩展名的方法
2015/07/06 Python
python__new__内置静态方法使用解析
2020/01/07 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
药学专业大专生的自我评价
2013/12/12 职场文书
咖啡厅创业计划书范本
2014/01/22 职场文书
财务总经理岗位职责
2014/02/16 职场文书
医院党员公开承诺书
2014/08/30 职场文书
争先创优演讲稿
2014/09/15 职场文书
亮剑观后感300字
2015/06/05 职场文书
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏