如何用Python将目录中每个文件夹分别压缩为独立.zip归档文件?
解决方案
直接用os模块遍历目标文件夹,结合zipfile模块逐个创建对应的压缩包即可,以下是完整代码:
import os import zipfile # 配置路径:源文件夹所在目录、压缩包输出目录 source_root = r"D:\test\flo" output_root = r"D:\test" # 遍历源目录下的所有子项 for folder_name in os.listdir(source_root): folder_path = os.path.join(source_root, folder_name) # 仅处理文件夹(跳过文件) if not os.path.isdir(folder_path): continue # 生成对应压缩包的路径:输出目录 + 文件夹名.zip zip_file_path = os.path.join(output_root, f"{folder_name}.zip") # 创建并写入压缩包 with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zip_handler: # 遍历当前文件夹内的所有文件(含子目录) for root, _, files in os.walk(folder_path): for file in files: file_full_path = os.path.join(root, file) # 计算文件在压缩包内的相对路径(保持原文件夹结构) archive_path = os.path.relpath(file_full_path, source_root) zip_handler.write(file_full_path, archive_path)
关键逻辑说明
- 压缩包命名:直接以遍历到的文件夹名称拼接
.zip,用f"{folder_name}.zip"实现对应命名需求。 - 文件写入:
- 用
os.walk递归遍历文件夹内所有文件,支持嵌套子目录场景。 os.path.relpath计算文件相对于源目录的路径,确保压缩包内的文件结构和原文件夹完全一致(不会包含D:\test\flo这类绝对路径)。
- 用
- 压缩模式:
zipfile.ZIP_DEFLATED启用压缩,若仅需打包不压缩,替换为zipfile.ZIP_STORED即可。
内容的提问来源于stack exchange,提问作者Caxa
相关产品推荐
相关产品推荐

