zipfile模块
这模块的操作方式基本上和文件的操作方式差不多。
例子1:
import zipfile
z =zipfile.ZipFile(filename,'r') #获取zip文件并且读取
for i inz.namelist(): #namelist函数获取zip包里面的文件名,z.namelist() 会返回压缩包内所有文 #件名的列表
print i
z.close() #关闭zip文件
zipfile.ZipFile(filename,mode,compression,allowZip64)
filename:zip文件名
mode:和文件的操作一样,r表示读,a表示打开zip文件王里面添加内容,w表示写(必要时就创建)。
compression:表示压缩格式,默认为ZIP_STORED表示只打包不开启压缩功能类似于tar,ZIP_DEFLATED 表示开启压缩(开启压缩必须指定)
allowZip64:表示是否支持64位压缩,默认值为False表示不支持64位压缩,压缩文件不能大于2G,如果压缩文件大于2G的话必须指定allowZip64=True
zipfile.close() :关闭压缩文件
zipfile.write(filename[, arcname[,compress_type]])
acrname是压缩文件中该文件的名字,默认情况下和filename一样
compress_type的存在是因为zip文件允许被压缩的文件可以有不同的压缩类型。
解压缩
zipfile.extractall([path[, member[,password]]])
path解压缩目录,没什么可说的
member需要解压缩的文件名列表
password当zip文件有密码时需要该选项
对于简单的应用,这么多就够了。
zipfile.is_zipfile(filename):判断一个文件是不是压缩文件
ZipFile.namelist():返回文件列表
ZipFile.getinfo(name)和ZipFile.infolist():
infolist方法返回的是一个ZipInfo对象列表
getinfo方法只返回一个ZipInfo对象,表示zip文档中相应文件的信息。
ZipInfo的属性:
ZipInfo.filename:获取文件名称
ZipInfo.date_time:获取文件最后修改时间。返回一个包含6个元素的元组:(年, 月, 日, 时, 分, 秒)
ZipInfo.compress_type:压缩类型。
ZipInfo.comment:文档说明
ZipInfo.extr:扩展项数据
ZipInfo.create_system:获取创建该zip文档的系统
ZipInfo.create_version:创建zip文档的PKZIP版本
ZipInfo.extract_version:获取解压zip文档所需的PKZIP版本
ZipInfo.reserved:预留字段,当前实现总是返回0
ZipInfo.flag_bits:zip标志位
ZipInfo.volume:文件头的卷标
ZipInfo.internal_attr:内部属性
ZipInfo.external_attr:外部属性
ZipInfo.header_offset:文件头偏移位
ZipInfo.CRC:未压缩文件的CRC-32
ZipInfo.compress_size:获取文件压缩后的大小
ZipInfo.file_size:获取未压缩的文件大小
例子2:
import zipfile
z = zipfile.ZipFile(filename, 'r')
for i in z.infolist():
print i.file_size, i.header_offset
tarfile模块
tarfile模块和zipfile模块的方法很类似
extractall更加安全
例子1
def tardir(dirname,tarfilename):
filelist=[]
if os.path.isfile(dirname):
filelist.append(dirname)
else:
for root,dirs,file in os.walk(dirname):
for name in file:
filelist.append(os.path.join(root,name))
#'w:bz2'是指写bz2压缩包,如果是gz包的话就用'w:gz'
tf = tarfile.open(tarfilename,'w:bz2')
for tar in filelist:
arcname = tar[len(dirname):]
print arcname
tf.add(tar,arcname)#往tar.bz2压缩文档里面写文件相当于zipfile.write()
tf.close()
tardir(r'C:\Users\Administrator\Desktop\p2psearcher3.5',r'C:\z.tar.bz2')