Python--我一般都用这个模块压缩文件
打包成压缩文件很多时候都能用上,也包括了自动化中的部分应用。例如,将测试报告打包发送。
本章就来介绍其中一个模块,可以用于结合上一章的内容结合使用。
from zipfile import ZipFile
❝ZipFile是zipfile的一个方法。
❞
提取zip文件
from zipfile import ZipFilefile = r'three_\notes\zips.zip'
with ZipFile(file,'r') as zip:zip.printdir()print("~" * 30)zip.extractall()print("over")
❝需要提前准备一个.zip压缩文件。最好不要带中文,可能会文件名造成乱码。
❞
File Name Modified Size
zips/headset.png 2022-12-03 10:34:14 7532
zips/mouse.png 2022-12-03 10:34:14 5439
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
over
❝**printdir()**方法打印存档的目录。
❞
**extractall()**方法会将zip文件的所有内容提取到当前工作目录中。
**extract()**方法来提取任何文件,方法是在 zip 文件中指定其路径。
zip.extract('zips/headset.png')
如果你想读取一些特定的文件,你可以这样:
data = zip.read(name_of_file_to_read)
写入zip文件
from zipfile import ZipFile
import osdef get_all_file_paths(directory):# 将文件写入列表file_paths = []# 获取指定路径的文件for root, directories, files in os.walk(directory):for filename in files:print(root,files)# 路径拼接filepath = os.path.join(root, filename)file_paths.append(filepath)# 返回所有路径return file_paths def main():# 需要压缩的路径directory = r'three_\notes\zips'# 传入遍历路径file_paths = get_all_file_paths(directory)# 打印压缩路径的内容print('Following files will be zipped:')for file_name in file_paths:print(file_name)# 写入压缩文件with ZipFile('my_python_files.zip','w') as zip:# 写入每一个文件for file in file_paths:zip.write(file)print('All files zipped successfully!') if __name__ == "__main__":main()
获取zip文件信息
from zipfile import ZipFile
import datetime# 路径
file_name = r"three_\notes\zips.zip"# 打开并读取其中的内容信息
with ZipFile(file_name, 'r') as zip:for info in zip.infolist():print(info.filename)print('\tModified:\t' + str(datetime.datetime(*info.date_time)))print('\tSystem:\t\t' + str(info.create_system) + '(0 = Windows, 3 = Unix)')print('\tZIP version:\t' + str(info.create_version))print('\tCompressed:\t' + str(info.compress_size) + ' bytes')print('\tUncompressed:\t' + str(info.file_size) + ' bytes')
以上就是该模块的大致用法,当然也有很多类似的模块,只要好用都可以。