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 10 Python
Python3中使用PyMongo的方法详解
Jul 28 Python
Python3 queue队列模块详细介绍
Jan 05 Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 Python
Python微信公众号开发平台
Jan 25 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
简单了解python单例模式的几种写法
Jul 01 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
简单介绍django提供的加密算法
Dec 18 Python
python 如何快速复制序列
Sep 07 Python
解决python3中os.popen()出错的问题
Nov 19 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
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
php过滤危险html代码
2008/08/18 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
js猜数字小游戏的简单实现代码
2013/07/02 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
使用 NodeJS+Express 开发服务端的简单介绍
2017/04/07 NodeJs
bootstrapvalidator之API学习教程
2017/06/29 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
python写程序统计词频的方法
2019/07/29 Python
简单介绍python封装的基本知识
2019/08/10 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
python实现三种随机请求头方式
2021/01/05 Python
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
总经理办公室主任岗位职责
2013/11/12 职场文书
经济管理自荐书
2014/06/09 职场文书
企业管理标语
2014/06/10 职场文书
领导干部整治奢华浪费之风思想汇报
2014/10/07 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
Golang 编译成DLL文件的操作
2021/05/06 Golang
pandas中DataFrame检测重复值的实现
2021/05/26 Python