hipttp://www.cnblogs.com/bergus/p/4811293.html python笔记之ZipFile模块
http://python.jobbole.com/81519/ Python模块学习:zipfile zip文件操作
Python压缩文件夹/解压缩zip文件!!!
python怎样压缩和解压缩ZIP文件(转) CNBLOG
Python的学习(二十六)—— 压缩与解压缩文件CSDN
os.sep
在 Windows 上,文件的路径分割符号是 ‘’ ,在 Linux 上 是 ‘/’。
为了让你的代码在不同的平台上都能运行,那么你写路径的时候是写 ‘/’ 还是写 ‘’ 呢?
使用 os.sep 的话,你就不用去考虑这个了,os.sep 根据你所处的平台,自动地采用相应的分割符号。
举例:
Linux下一个路径, /usr/share/python,那么上面的 os.sep 就是 ‘/’
Windows下一个路径, C:\Users\Public\Desktop, 那么上面的 os.sep 就是 ‘’。
zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了。ZipFile是主要的类,用来创建和读取zip文件而ZipInfo是存储的zip文件的每个文件的信息的。
需要注意的是在读出时,因为只能读出内容,因此如果想实现按目录结构展开 zip 文件的话,这些操作需要自已来完成,比如创建目录,创建文件并写入。而写入时,则可以根据需要动态组织在 zip 文件中的目录结构,这样可以不按照原来的目录结构来生成 zip 文件。
一、读取zip文件
首先,通过zipfile模块打开指定zip文件,如:
zpfd = zipfile.ZipFile(path, mode=’r’)
对于zipfile,其标志与open所用的打开文件标志有所不同,不能识别 ‘rb’。
然后,读取zip文件中的内容,zipfile对象提供一个read(name)的方法,name为zip文件中的一个文件入口,执行完成之后,将返回读出的内容,如:
for filename in zpfd.namelist():
tmpcont = zpfd.read(filename)
print ‘len(tmpcont)’, ‘tmpcont’
需要注意的是,读取zip文件时,只能读取内容
二、写入zip文件
首先,需要zipfile模块写打开或创建zip文件,如:
zpfd = zipfile.ZipFile(path, mode=’w’)
写打开是标志可以为’w’或’a’(‘a’表示写入一个zip文件), 或者传入第三个参数cmopression压缩标志:
compression=zipfile.ZIP_DEFLATED 需要导入zlib模块,进行压缩
compression=zipfile.ZIP_STORED 表示只对文件进行打包,并不压缩
写入有两种方式:
一种是直接写入一个已经存在的文件,可使用zipfile对象中write(filename, arcname, compress_type)第一个参数为文件名(要压缩进压缩包的文件),第二个参数指写入zip文件中的文件名(压入压缩包之后该文件叫啥名字呢?),默认与filename一致,第三个参数压缩标志可以覆盖打开zipfile时的使用参数;
另一种是写入一个字符串,可使用zipfile对象中的writestr(zinfo_or_arcname, bytes),第一个参数是zipinfo对象或写到zip文件中的压缩名,第二个参数是待写入的字符串
最后,对于打开的zipfile对象需要进行关闭,从而使得写入内容真正写入磁盘,即:
zpfd.close()