python zipfile 性能_Python文档的压缩与解压——zipfile,python

本文介绍了Python中使用ZipFile类操作zip文件的方法。详细说明了创建ZipFile对象时各参数的含义,如文件路径、打开模式、压缩方法等。还列举了ZipFile对象常用的方法和属性,以及ZipInfo对象的属性。最后给出了文件夹压缩和解压的案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下:

创建一个ZipFile对象

class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])    #表示一个zip文件

参数file:

表示文件的路径或类文件对象(file-like object);

参数mode:

指示打开zip文件的模式,默认值为'r',表示读已经存在的zip文件,也可以为'w'或'a','w'表示新建一个zip文档或覆盖一个已经存在的zip文档,'a'表示将数据附加到一个现存的zip文档中。

参数compression:

表示在写zip文档时使用的压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。ZIP_STORE是默认的,表示不压缩;ZIP_DEFLATED表示压缩

参数allowZip64

如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。

ZipFile对象常用的方法和属性:

ZipFile.getinfo(name):

:获取zip文档内指定文件的信息。返回一个zipfile.ZipInfo对象,它包括文件的详细信息。

ZipFile.infolist()

:获取zip文档内所有文件的信息,返回一个zipfile.ZipInfo的列表。

ZipFile.namelist()

:获取zip文档内所有文件的名称列表。

ZipFile.extract(member[, path[, pwd]]):

将zip文档内的指定文件解压到当前目录。

参数member:指定要解压的文件名称或对应的ZipInfo对象;(需要解压缩的文件名儿列表)

参数path指定了解析文件保存的文件夹;

参数pwd为解压密码。

ZipFile.printdir()

:将zip文档内的信息打印到控制台上。

ZipFile.setpassword(pwd)

:设置zip文档的密码。

ZipFile.read(name[, pwd]):

获取zip文档内指定文件的二进制数据。

zipfile.write(filename[, arcname[, compress_type]]):

将文件写到压缩包中

filename为文件路径,

arcname为添加到zip文档之后保存的名称;未指定将按 filename进行压缩;

参数compress_type表示压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED

Class ZipInfo

ZipFile.getinfo(name) 方法返回的是一个ZipInfo对象,表示zip文档中相应文件的信息。它支持如下属性:

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: 获取未压缩的文件大小。

案例

文档夹压缩

f = zipfile.ZipFile('sss_db.zip', 'w', zipfile.ZIP_DEFLATED)

for dirpath, dirnames, filenames in os.walk(file):

save_path = os.path.relpath(dirpath, file) #获取以压缩文件夹开始的相对路径

for filename in filenames:

f.write(os.path.join(dirpath, filename), os.path.join(save_path, filename)) f.close()

文档解压

#解压zip格式文件

file = 'sss_db.zip'

zip_file = zipfile.ZipFile(os.path.join(path, file))

for names in zip_file.namelist():

zip_file.extract(names, path)

zip_file.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值