2015-01-13 250 views
0

我正在編寫一個Python腳本,我必須從外部軟件調用一個命令。我正在使用Popen()函數來調用這樣的命令。該命令也有一些選項。我想知道如何將這些選項合併到Popen()函數中。我現在使用的代碼是:使用Popen()函數從外部軟件調用命令()函數

from subprocess import Popen, PIPE 
proc = Popen(["halSummarizeMutations", hal_output], stdout=PIPE) 
summary_mutation = proc.communicate()[0] 

在Popen()函數中,我應該爲命令的一個選項採用一個變量。修改後的代碼應該如下所示:

proc = Popen(["halSummarizeMutations", --option optioninput, hal_output], stdout=PIPE) 

代碼是否正確或者是否存在其他代碼編寫方法?提前致謝。

+0

你有沒有嘗試子程序打開外部程序? http://pymotw.com/2/subprocess/ – dragon2fly

+0

變量'hal_output'的內容是什麼?在任何情況下,' - 選項optioninput'都需要是一個字符串。 – Kevin

+0

@Kevin hal_ouput是一個變量,這不是我遇到的問題。問題是我想接受的其他變量,optioninput的具體選項... –

回答

0

如果你想添加一些參數到外部軟件,只需添加變量作爲一個字符串,這裏是一個「ls -la」的例子,你可以添加「-la」到列表中,你可以添加任何 其他參數列表。記住參數都是字符串。

from subprocess import Popen, PIPE 
proc = Popen(["ls", '-la'], stdout=PIPE) # if you want more, add after "-la" 
print proc.stdout.readlines() 
+0

是的,這工作得很好!謝謝!! –

+0

downvote。如果問題代碼在這裏使用'p.communicate()[0]',爲什麼還要使用'p.stdout.readlines()'? – jfs

0

提供每個參數作爲一個單獨的列表項:

from subprocess import check_output 

cmd = ["halSummarizeMutations", "--option", "optioninput", hal_output] 
summary_mutation = check_output(cmd) 

其中hal_output是前面定義的字符串變量。