我在Python脚本中使用Pyunpack库。事实证明这只是使用p7zip CLI来提取7zip文件。问题是,如果脚本遇到重复文件,p7zip想要知道是否要覆盖,提示用户并中断脚本。
有没有办法可以预先回复Pyunpack的覆盖提示,以便我的代码执行?或者如果那是不可能的,有没有办法通过Python传递CLI提示,这样程序至少可以继续用户输入?
如果我输入Python脚本用于bash的相同命令,我会得到:
7z x -o/home/path/to/extract/directory -- /home/path/to/file.7z
file /something/in/the/7z/directory/filename.thing already exists. Overwrite with filename.thing?
(Y)es / (N)o / (A)lways / (S)kip all / A(u)to rename all / (Q)uit?
但是当我在Python中执行它时,Python只是在等待对此提示的响应时挂起在子进程中。
我想自动使用自动重命名选项。有什么建议吗?
答案 0 :(得分:1)
我找到了解决方案!感谢Etan指出我正确的方向。
我必须打开patoolib并编辑p7zip.py。
它定义extract_7z
的位置我通过注释来硬编码-y
标志:
if not interactive:
cmdlist.append('-y')
在cmdlist.append('-y')
下面添加cmdlist = [cmd, 'x']
。
现在我的代码运行顺利了!