Python中zipfile.ZipFile压缩函数无法运行,请求排查解决
问题排查与修复方案
核心问题分析
- 语法错误:
__main__写法错误
代码中if __name__ == "__ main __":存在多余空格,正确写法应为if __name__ == "__main__"(双下划线中间为main,无空格),这个错误会导致主入口代码无法被正确触发执行。 - 目标目录不存在会触发异常
如果dest目录未提前创建,创建ZipFile对象时会抛出文件找不到的错误,需要先确保目标目录存在。 - 可选优化:压缩包路径冗余问题
默认archive.write会保留文件的完整路径结构,若希望压缩包内仅保留文件名,需指定arcname参数。
修复后的完整代码
import zipfile import pathlib def make_archive(filepaths, dest_dir): dest_path = pathlib.Path(dest_dir) # 确保目标目录存在,不存在则自动创建 dest_path.mkdir(parents=True, exist_ok=True) zip_file_path = dest_path / "compressed.zip" # 启用压缩模式(默认是无压缩的存储模式) with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as archive: for filepath in filepaths: # 仅保留文件名,避免压缩包内出现冗余路径 archive.write(filepath, arcname=pathlib.Path(filepath).name) if __name__ == "__main__": make_archive(filepaths=["bonus 1.py", "bonus 2.py"], dest_dir="dest")
修复说明
- 修正了
__main__的语法错误,确保主函数能被正确调用; - 添加目录创建逻辑,自动生成不存在的目标目录;
- 启用
ZIP_DEFLATED参数开启压缩(默认不压缩),同时通过arcname控制压缩包内的文件结构; - 使用
pathlib的路径拼接方式,让路径处理更严谨。
内容的提问来源于stack exchange,提问作者Nusrat Jahan
相关产品推荐
相关产品推荐

