使用zipfile库可轻松实现python文件压缩;2. 基础用法包括创建zipfile对象并调用write方法添加文件,指定arcname避免路径问题;3. 压缩目录需遍历其内容递归添加,推荐使用os.walk实现;4. 常用压缩算法为zipfile.zip_deflated,无需压缩则用zip_stored;5. 操作完成后应妥善处理异常并清理资源,确保程序健壮性。完整示例展示了从创建文件到压缩及清理的全过程。

要在Python里实现文件压缩,尤其是处理常见的zip格式,
zipfile库绝对是首选。它内置在Python标准库里,用起来非常直接,无论是打包文件、解压内容,还是查看压缩包里的东西,都能轻松搞定。
说起文件压缩,我们通常想到的就是把一堆散乱的文件或者一个文件夹打包成一个更小的、方便传输和存储的档案。Python的
zipfile库就是干这个的。
最基础的用法,比如把一个文件压缩进去:
立即学习“Python免费学习笔记(深入)”;
import zipfile
import os
# 为了让代码可运行,我们先创建一个示例文件
file_to_compress = 'my_document.txt'
with open(file_to_compress, 'w', encoding='utf-8') as f:
f.write("这是我的重要文档内容。\n")
f.write("里面有一些关键信息。\n")
output_zip_file = 'archive.zip'
try:
# 'w' 模式表示写入(如果文件存在则覆盖),zipfile.ZIP_DEFLATED 是常用的压缩算法
with zipfile.ZipFile(output_zip_file, 'w', zipfile.ZIP_DEFLATED) as zf:
# arcname 参数决定了文件在压缩包里的名字,这里用 basename 避免包含完整路径
zf.write(file_to_compress, arcname=os.path.basename(file_to_compress))
print(f"'{file_to_compress}' 已经成功压缩到 '{output_zip_file}'。")
except FileNotFoundError:
print(f"错误:文件 '{file_to_compress}' 不存在。")
except Exception as e:
print(f"压缩过程中发生错误:{e}")
finally:
# 清理示例文件
if os.path.exists(file_to_compress):
os.remove(file_to_compress)
这里我用了
zipfile.ZIP_DEFLATED,这是最常见的压缩算法,效果通常不错。如果不需要压缩,只想打包,可以用
zipfile.ZIP_STORED,那样速度会快很多,但文件大小不变。
arcname参数也很重要,它决定了文件在压缩包里的名字,不指定的话,会保留原始文件的完整路径,有时这不是我们想要的。
要是想把一个目录下的所有文件都塞进去,那就需要遍历一下了。这通常是我处理项目备份或者发布时常用的方式:
import zipfile
import os
def zip_directory(path_to_zip, output_zip_path):
"""
将指定目录下的所有文件和子目录压缩到ZIP文件。
"""
# 创建一个示例目录和文件
example_dir = path_to_zip
os.makedirs(os.path.join(example_dir, 'sub_folder'), exist_ok=True)
with open(os.path.join(example_dir, 'file1.txt'), 'w', encoding='utf-8') as f: f.write('这是文件1的内容。\n')
with open(os.path.join(example_dir,










