2016-03-15 47 views
1

我在Python腳本中使用Pyunpack庫。事實證明,這只是使用p7zip CLI來提取7zip文件。問題是,如果腳本運行到重複文件中,p7zip想知道是否覆蓋,提示用戶並中斷腳本。防止CLI提示的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

你可以傳遞參數嗎?所以你可以使用'-y'標誌? –

+0

可悲的Pyunpack不支持傳遞參數。 Patool似乎沒有記錄它。 –

回答

1

我找到了解決方案!感謝Etan指引我走向正確的方向。我不得不打開patoolib並編輯p7zip.py。

,其中定義了extract_7z我註釋掉硬編碼的-y標誌:

if not interactive: 
    cmdlist.append('-y') 

並添加cmdlist.append('-y')正下方cmdlist = [cmd, 'x']

現在我的代碼運行順利!