2014-06-16 70 views
0

我想從另一個使用subprocess運行一個python程序。下面是到目前爲止,我已經得到了功能:檢查python中的子進程

def runProcess(exe): 
p = subprocess.Popen(exe, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
while(True): 
    retcode = p.poll() #returns None while subprocess is running 
    line = p.stdout.readline() 
    yield line 
    if(retcode is not None): 
    break 

然後我運行:

for line in runProcess('python myotherprogram.py'): print line 

,但我得到一個OS error: no such file,但它並沒有告訴我什麼文件不存在。真是莫名其妙。有什麼建議麼?對於正常的終端命令,我可以使用runProcess功能,例如ls

回答

4

不存在的是一個名爲python myotherprogram.py的單個可執行文件。要指定參數,您需要提供一個由命令及其參數組成的列表,例如runProcess(["python", "myotherprogram.py"]),或者指定shell=TruePopen構造函數。

documentation相關報價:

ARGS應的程序參數的順序,否則單 字符串。默認情況下,要執行的程序是參數 中的第一項,如果參數是序列。 如果 args是一個字符串,則解釋爲 取決於平臺並在下面進行描述。請參閱shell和可執行文件 ,以獲取與默認行爲的其他差異。除非另有說明,否則建議通過參數作爲序列。

在Unix上,如果參數是一個字符串,則將該字符串解釋爲要執行的程序的名稱或 路徑。但是,只有在不將 傳遞給程序的情況下才能完成此操作。

+0

啊我明白了。非常感謝! – user3689258