對於如何完成此操作,我有點困惑。在Python中調用具有混合數據類型參數的子進程
我需要做的是從Python腳本中調用一個外部命令,該命令需要輸入多個參數和一個文件名。
讓我們叫,我叫「前衛」的可執行文件,輸入文件「文件」,因此命令行(Bash終端)看起來像這樣:
$ prog --{arg1} {arg2} < {file}
在上面{ARG1}是一個字符串,{arg2}是一個整數。
如果我使用以下內容:
#!/usr/bin/python
import subprocess as sbp
sbp.call(["prog","--{arg1}","{arg2}","<","{file}"])
結果被從「PROG」的輸出誤差,在那裏它聲稱,輸入缺失{ARG2}
下面產生一個有趣的錯誤:
#!/usr/bin/python
import subprocess as sbp
sbp.call(["prog","--{arg1} {arg2} < {file}"])
所有的空間似乎已經從第二個字符串,並在後面加上等號刪除:
command not found --{arg1}{arg2}<{file}=
這些行爲似乎對我沒有任何意義,並且沒有太多可以通過在線找到的Python手冊頁。請注意,用sbp.Popen替換sbp.call並不能解決問題。
這兩種方法都很好。正如你所說,鍵入第一種方法會更快,但如果多次調用,方法2最終可能會更快。 – da5id
後續行動:有沒有辦法在某種列表中捕獲方法2中第二行的輸出? – da5id
['subprocess.check_output()'](http://docs.python.org/2/library/subprocess.html#subprocess.check_output)函數將返回命令的輸出,而不是其返回碼。 – andrewdotn