代码可以拿去直接用
def zip_compress(dir_path):
output_name = f'{dir_path}.zip'
parent_name = os.path.dirname(dir_path) # D:\work
zip = zipfile.ZipFile(output_name, 'w', zipfile.ZIP_DEFLATED)
for root,dirs,files in os.walk(dir_path):
for file in files:
if str(file).startswith('~$'): # 判断是否为临时文件,不压缩临时文件
continue
filepath = os.path.join(root, file) # D:\work\test\aaa.txt
writepath = os.path.relpath(filepath, parent_name) # test\aaa.txt
zip.write(filepath, writepath)
zip.close()
dir_path = r'D:\work\test'
zip_compress(dir_path)
解疑:代码中为什么要有parent_name和writepath
关键点:压缩后压缩文件的目录结构不同详情如下
没有parent_name和writepath的修改,压缩出来的效果如下:
有之后压缩效果如下: