使用Python ZipFile创建压缩包时生成空ZIP文件问题求助
解决ZipFile生成空压缩文件的问题
可能的原因及解决方法
- 目标文件不存在或路径错误:脚本中指定的
file_1.txt等文件如果不在脚本执行的当前工作目录,ZipFile.write()不会抛出错误,但会跳过这些文件,最终生成空压缩包。- 解决:用
os.getcwd()查看当前工作目录,确认文件位置;或者直接使用文件的绝对路径(比如'/Users/xxx/Documents/file_1.txt')。
- 解决:用
- 文件读取权限不足:如果脚本没有读取目标文件的权限,也会导致无法将文件添加到压缩包中。
- 解决:检查文件的权限设置,确保当前用户有读取权限。
- append模式使用不当:
'a'模式要求目标zip文件已存在且格式合法,若原文件不存在,它会创建新的空zip,和'w'模式效果一致,所以换模式无法解决核心问题。
优化后的脚本示例
可以加入文件存在性检查和异常捕获,方便排查问题:
from zipfile import ZipFile import os files_to_zip = ['file_1.txt', 'file_2.txt', 'file_3.txt'] # 检查文件是否存在 for file_path in files_to_zip: if not os.path.exists(file_path): print(f"警告:文件 {file_path} 不存在,将跳过") with ZipFile('file_name.zip', 'w') as zip_file: for file_path in files_to_zip: try: zip_file.write(file_path) print(f"已添加 {file_path} 到压缩包") except Exception as e: print(f"添加 {file_path} 失败:{str(e)}")
额外说明
Python 3.10.8的ZipFile模块并没有已知的会导致空压缩包的普遍bug,大概率是文件路径或权限问题导致的。
内容的提问来源于stack exchange,提问作者Angel del Pino
相关产品推荐
相关产品推荐

