Python通过命令行创建7zip压缩包异常问题排查
为什么你的7zip命令只打开程序却不生成压缩包?
让我帮你排查这个问题——你的subprocess.run调用里有两个关键错误,导致7zip没有正确执行压缩操作:
1. 加密选项的参数格式不对
你写的mhe是用来加密压缩包文件名的选项,但7zip的命令行参数必须以-开头。现在你把mhe当成了普通参数,7zip会误以为这是要压缩的文件名,但实际上不存在这个文件,直接导致命令参数无效,程序只能启动却无法完成压缩。
正确的写法应该是-mhe(也可以写成-mhe=on或-mhe=1,效果完全一致)。
2. 确认你用的是命令行版本的7zip
如果path指向的是7zG.exe(7zip的图形界面程序),而不是7z.exe(纯命令行工具),那么执行命令时只会弹出7zip的窗口,不会在后台执行压缩任务。你需要确保path是7z.exe的完整路径,比如C:\Program Files\7-Zip\7z.exe。
修正后的代码
把参数修正后,正确的调用应该是这样的:
rc = subprocess.run([path, 'a', 'archive.7z', '-psecret', '-mhe', 'log.log'])
另外,建议加上捕获输出的参数,方便后续排查问题:
rc = subprocess.run( [path, 'a', 'archive.7z', '-psecret', '-mhe', 'log.log'], capture_output=True, text=True ) # 查看返回码和错误信息 print("返回码:", rc.returncode) print("错误输出:", rc.stderr)
如果还有问题,rc.stderr会给出7zip的具体错误提示,比如文件找不到、权限问题等,能帮你更快定位问题。
内容的提问来源于stack exchange,提问作者Afsheen Taheri
相关产品推荐
相关产品推荐

