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的Supervisor进行进程监控以及自动启动
May 29 Python
利用Python脚本实现ping百度和google的方法
Jan 24 Python
浅谈python内置变量-reversed(seq)
Jun 21 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
Python循环实现n的全排列功能
Sep 16 Python
10行Python代码计算汽车数量的实现方法
Oct 23 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
图解Python中深浅copy(通俗易懂)
Sep 03 Python
python简单实现插入排序实例代码
Dec 16 Python
pytorch实现手写数字图片识别
May 20 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/04/18 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
php类的定义与继承用法实例
2015/07/07 PHP
php把数组值转换成键的方法
2015/07/13 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
pycharm 使用心得(三)Hello world!
2014/06/05 Python
Python自定义简单图轴简单实例
2018/01/08 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
详解Django 时间与时区设置问题
2019/07/23 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
数学高效课堂实施方案
2014/03/29 职场文书
年终考核实施方案
2014/05/26 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
公司出差管理制度范本
2015/08/05 职场文书
JavaScript 实现页面滚动动画
2021/04/24 Javascript
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
Django框架中表单的用法
2022/06/10 Python