2010-07-21 96 views
0

我想從一個函數中調用外部腳本,例如:如何從Python函數中檢索調用腳本的結果?

import subprocess 

def call_script(script): 
    subprocess.call(script) 
    return answer #retrieving the result is the part I'm struggling with 

call_script("/user/bin/calc_delta.py") 

腳本calc_delta.py只需打印出結果時,它完成。我如何將該腳本的結果分配給一個變量?謝謝。

+3

您應該使用'/'而不是'\\'。 – kennytm 2010-07-21 17:49:10

回答

4

而不是使用subprocess.call你應該使用Popen並呼籲communicate就可以了。

這將允許您閱讀stdoutstderr。您也可以使用stdin輸入數據。從文檔​​3210

例子:

output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0] 
2

你應該看看subprocess.Popen(popen

例如(從文檔):

pipe = Popen("cmd", shell=True, bufsize=bufsize, stdout=PIPE).stdout 

subprocess.call只會給你你的電話,而不是輸出的響應代碼。

3

在Python≥2.7/≥3.1,你可以使用subprocess.check_output到標準輸出轉換成一個海峽。

answer = subprocess.check_output(['/usr/bin/calc_delta.py']) 

也有subprocess.getstatusoutputsubprocess.getoutput關於Python≥3.1,如果你需要的是一個shell命令,但它支持僅* NIX。