打包成压缩文件很多时候都能用上,也包括了自动化中的部分应用。例如,将测试报告打包发送。
本章就来介绍其中一个模块,可以用于结合上一章的内容结合使用。
from zipfile import ZipFile
❝ZipFile是zipfile的一个方法。
❞
提取zip文件
from zipfile import ZipFile file = 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 os def 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')
以上就是该模块的大致用法,当然也有很多类似的模块,只要好用都可以。