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迭代用法实例教程
Sep 08 Python
python使用PyGame播放Midi和Mp3文件的方法
Apr 24 Python
Python爬虫爬取美剧网站的实现代码
Sep 03 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
python pandas库中DataFrame对行和列的操作实例讲解
Jun 09 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
python set内置函数的具体使用
Jul 02 Python
Django实现WebSSH操作物理机或虚拟机的方法
Nov 06 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
May 22 Python
Python configparser模块操作代码实例
Jun 08 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函数的实现原理及性能分析(二)
2015/05/13 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
jQuery MD5加密实现代码
2010/03/15 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
Zabbix实现微信报警功能
2016/10/09 Python
python中异常捕获方法详解
2017/03/03 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
Django 再谈一谈json序列化
2020/03/16 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
python复合条件下的字典排序
2020/12/18 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
电厂厂长岗位职责
2014/01/02 职场文书
yy司仪主持词
2014/03/22 职场文书
安全标语大全
2014/06/10 职场文书
社会学专业求职信
2014/07/17 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL