python 压缩文件成zip_python文件压缩zipfile和tarfile模块用法

python文件压缩zipfile和tarfile模块

第一部分,zipfile模块

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文件允许被压缩的文件可以有不同的压缩类型。

2、解压缩文件

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模块的方法很类似

tarfile.is_tarfile(filename):判断文件是否是一个tar归档文件

getmember(filename):返回对象成员名称,如果那个成员名不能被发现,将引发一个keyerror

getmembers():返回归档成员属性的详细信息的对象,相当于zipfile里面的infolist

name:文件名字,getnames()也能返回文件名

mode:权限

mtime:创建时间

size:文件的大小,bytes

list():返回成员存档对象 相当于ls -l

extract('filename','path'):解压单个文件到指定路径

extractfile(filename):可以访问归档成员的数据,如果成员是文件的话可以用read()读取文件类容(文件的方法)

extractall('path'):解压全部文件到指定路径,解压单个文件到指定目录的方法是extractall('path',member=t.getmember(filename))

extractall更加

安全

例子: 代码示例:

import os,os.path

import tarfile

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')

以上通过实例介绍了zipfile和tarfile模块的用法,希望对大家有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值