紧缩Zipfile与解紧缩Tarfile模块-经常使用Python高效治理存档文件 (紧缩手术怎么做多少钱)
/target=_blankclass=infotextkey>Python提供了两个规范库模块来处置文件的紧缩和解紧缩操作:zipfile用于处置ZIP格局的文件紧缩,tarfile用于处置Tar格局的文件紧缩。
本文将分享这两个模块的经常使用方法,包含装置、紧缩文件的创立、紧缩文件的读取、解紧缩和示例代码。
装置
Python的zipfile和tarfile模块是规范库的一局部,因此不须要额外装置。可以间接在Python程序中导入它们。
importzipfileimporttarfile
经常使用zipfile模块紧缩文件
创立紧缩文件
经常使用zipfile模块可以轻松地创立ZIP紧缩文件。
以下是一个示例,展示如何创立一个ZIP紧缩文件并将文件减少到其中:
importzipfile#创立一个ZIP紧缩文件withzipfile.ZipFile('example.zip','w')aszipf:#减少文件到紧缩文件zipf.write('file.txt','file.txt')
读取紧缩文件
要读取ZIP紧缩文件并失掉其中的文件列表,可以经常使用zipfile.ZipFile的namelist()方法:
importzipfilewithzipfile.ZipFile('example.zip','r')aszipf:file_list=zipf.namelist()print("ZIP紧缩文件中的文件列表:",file_list)
经常使用tarfile模块紧缩文件
创立紧缩文件
经常使用tarfile模块可以创立Tar紧缩文件。
以下是一个示例,展示如何创立一个Tar紧缩文件并将文件减少到其中:
importtarfile#创立一个Tar紧缩文件withtarfile.open('example.tar.gz','w:gz')astarf:#减少文件到紧缩文件tarf.add('file.txt',)
读取紧缩文件
要读取Tar紧缩文件并失掉其中的文件列表,可以经常使用tarfile.TarFile的getnames()方法:
importtarfilewithtarfile.open('example.tar.gz','r:gz')astarf:file_list=tarf.getnames()print("Tar紧缩文件中的文件列表:",file_list)
解紧缩文件
要解紧缩ZIP或Tar紧缩文件中的文件,可以经常使用相应的模块提供的解紧缩方法。
以下是一个示例,展示如何解紧缩文件:
解紧缩ZIP文件
importzipfilewithzipfile.ZipFile('example.zip','r')aszipf:zipf.extractall('extracted_files')#将文件解紧缩到指定目录
解紧缩Tar文件
importtarfilewithtarfile.open('example.tar.gz','r:gz')astarf:tarf.extractall('extracted_files')#将文件解紧缩到指定目录
示例代码
以下是一些示例代码,展示了如何经常使用zipfile和tarfile模块口头经常出现义务:
importzipfileimporttarfile#经常使用zipfile模块创立ZIP紧缩文件withzipfile.ZipFile('example.zip','w')aszipf:zipf.write('file.txt','file.txt')#经常使用zipfile模块读取ZIP紧缩文件withzipfile.ZipFile('example.zip','r')aszipf:file_list=zipf.namelist()print("ZIP紧缩文件中的文件列表:",file_list)#经常使用tarfile模块创立Tar紧缩文件withtarfile.open('example.tar.gz','w:gz')astarf:tarf.add('file.txt',)#经常使用tarfile模块读取Tar紧缩文件withtarfile.open('example.tar.gz','r:gz')astarf:file_list=tarf.getnames()print("Tar紧缩文件中的文件列表:",file_list)#解压ZIP文件withzipfile.ZipFile('example.zip','r')aszipf:zipf.extractall('extracted_files')#解压Tar文件withtarfile.open('example.tar.gz','r:gz')astarf:tarf.extractall('extracted_files')
总结
Python的zipfile和tarfile模块是处置文件的紧缩和解紧缩操作的关键工具。区分用于ZIP和Tar格局的文件,提供了便捷而有效的方法来创立、读取和解紧缩文件。在本文中,分享了如何创立紧缩文件并减少文件到中,以及如何读取紧缩文件中的文件列表。同时,还展示了如何解紧缩ZIP和Tar紧缩文件中的文件到指定目录。
这两个模块关于处置文件操作十分有用,可以在许多场景中协助您有效地治理文件和数据。无论是备份文件、打包文件,还是解紧缩已紧缩的数据,zipfile和tarfile模块都提供了便捷而灵敏的处置打算。
使用zipfile库操作zip格式压缩包
其他内容,设置密码setpassword,但发现设置密码后是不起作用的,没有做深入研究 还可以进行二进制读写,大家有兴趣可自己研究下 此外使用winrar生成的加密的zip包用zipfile是无法解密的会提示,会报错:That compression method is not supported 网上有一种说是用python破解加密文件6位密码的,亲测,python3.8是不可用的
Python打开zip文件
Zip文件格式是通用的文档压缩标准。 自1.6版本起,Python中zipfile模块能够直接处理zip文件里的数据,例如需要将对应目录或多个文件打包或压缩成zip格式,或者需要查看一个zip格式的归档文件中部分或者所有文件同时避免讲这些文件展开到磁盘上。 使用ZipFile类来操作zip文件。 创建一个ZipFile对象,表示一个zip文件。 参数file:文件的路径或者类似文件对象参数mode:读r,写入w,添加a参数compression: ZIP_STORED(无压缩),ZIP_DEFLATED(压缩,需要zlib支持)参数allowZip64:默认情况下报错,将其设为True,ZipFile将用ZIP64扩展进行创建文件。 下面示例展示了读取一个zip文档,将文档里所有文件解压到名为work的文件里。 import zipfile if __name__ == __main__: zFile = (F:\\,r) #():获取ZIP文档内所有文件的名称列表 for fileM in (): (fileM,F:\\work) () read(self,name,pwd=None)获取ZIP文档内文件的二进制数据 下面例子展示了使用read方法获取ZIP文档中文件的数据,并写到文件中 import zipfile if __name__ == __main__: zipFile = (F:\\,r) highlight=true>文件写入压缩文档里面。 import zipfile if __name__ == __main__: zipFile = (F:\\,w) (F:\\,,_DEFLATED) ()getinfo(name)返回一个ZipInfo类的对象。 import zipfile if __name__ == __main__: zipInfo = () print(filename:,) print(date_time:,_time) 常用函数 关闭归档文件,你必须在退出程序之前调用close()否则将不会写入关键记录数据。 返回一个ZipInfo对象,其中包含有关归档成员name的信息。 针对一个目前并不包含于归档中的名称调用getinfo()将会引发KeyError。 返回一个列表,其中包含每个归档成员的ZipInfo对象。 如果是打开一个现有归档则这些对象的排列顺序与他们对于条目在磁盘上的实际ZIP文件中的顺序一致。 返回按名称排列的归档成员列表。 以二进制文件类对象的形式访一个归档成员。 name可以是归档内某个文件的名称也可以是某个ZipInfo对象。 如果包含了mode形参,则它必须为r(默认值)或w。 pwd为用于解密已加密Zip文件的密码。 open()也是一个上下文 管理器,因此支持with语句: with ZipFile() as myzip: with () as myfile: print(()) 如果mode为“r”则文件类对象(ZipExtFile)将只读并且提供下列方法:read(),readline(),readlines(),seek(),tell(),__iter__(),__next__()。 这些对象可独立于ZipFile进行操作。 如果mode=w则返回一个可写入的文件句柄,它将支持write()方法。 当一个可写入的文件句柄被打开时,尝试读写ZIP文件中的其他文件将会引发ValueError。 当写入一个文件时,如果文件大小不能预先确定但是可能超过2GiB,可传入force_zip64=True以确保标头格式能够支持超大文件。 如果文件大小可以预先确定,则在构造ZipInfo对象时应设置file_size,并将其作name形参。 从归档中提取一个成员放入当前工作目录;member必须为成员的完整名称或ZipInfo对象。 成员的文件信息会尽可能精确地被提取。 path指定一个要提取到的不同目录。 member可以是一个文件名或ZipInfo对象。 pwd是用于解密文件的密码。 返回所创建的经正规化的路径(对应于目录或新文件)。 从归档中提取出所有成员放入当前工作目录。 path指定一个要提取到的不同的目录。 members为可选项且必须为namelist()所返回列表的一个子集。 pwd是用于解密文件的密码。 警告:绝不要未经预先检验就从不可靠的源中提取归档文件。 这样有可能在 path 之外创建文件,例如某些成员具有以/开始的文件名或带有两个点号..的文件名。 此模块会尝试防止这种情况。 参见 extract() 的注释。 将归档是目录表打印到. 设置pwd为用于提取已加密文件的默认密码。 返回归档中文件name的字节数据。 name是归档中文件的名称,或是一个ZipInfo对象。 归档必须以读取或追加方式打开。 pwd为用于已加密文件的密码,并且如果指定该参数则它将覆盖通过setpassword()设置的默认密码。 on a ZipFile that uses a compression method 在使用 ZIP_STORED , ZIP_DEFLATED , ZIP_BZIP2 或 ZIP_LZMA 以外的压缩方法的 ZipFile 上调用 read() 将引发 NotImplementedError 。 如果相应的压缩模块不可用也会引发错误。 读取归档中的所有文件并检查他们的CRC和文件头。 返回第一个已损坏文件的名称,在其他情况下则返回None。 将名为filename的文件写入归档,给予的归档名为arcname(默认情况下将与filename一致,但是不带驱动器盘符并会移除开头的路径分隔符)。 compress_type如果给出,它将覆盖作为构造器compression形参对于新条目所给出的值。 类似地,compresslevel如果给出也将覆盖构造器。 归档必须使用w,x“或a模式打开。 将一个文件写入归档。 内容为 data ,它可以是一个 str 或 bytes 的实例;如果是 str ,则会先使用 UTF-8 进行编码。 zinfo_or_arcname 可以是它在归档中将被给予的名称,或者是 ZipInfo 的实例。 如果它是一个实例,则至少必须给定文件名、日期和时间。 如果它是一个名称,则日期和时间会被设为当前日期和时间。 归档必须以w,x或a模式打开。 ZIP文件的名称
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。