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栈类实例分析
Jun 15 Python
Python实现的使用telnet登陆聊天室实例
Jun 17 Python
Python发送http请求解析返回json的实例
Mar 26 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
使用python语言,比较两个字符串是否相同的实例
Jun 29 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 Python
Golang Web 框架Iris安装部署
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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
德生9700DX电路分析
2021/03/02 无线电
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
PHP类的特性实例分析
2016/09/28 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python抓取京东图书评论数据
2014/08/31 Python
Python文件和目录操作详解
2015/02/08 Python
简单介绍Python中的decode()方法的使用
2015/05/18 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
PyQt5每天必学之组合框
2018/04/20 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
python爬取内容存入Excel实例
2019/02/20 Python
Django使用rest_framework写出API
2020/05/21 Python
python中添加模块导入路径的方法
2021/02/03 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
表决心的诗句大全
2014/03/11 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS