2014-11-01 80 views
1

我有這裏面一個PY文件:蟒蛇 - 路徑印刷內部輸出

from subprocess import Popen 

program = "path to program.exe" 
file = "path to file used by program.exe" 

p = Popen([program, file]) 
print p.stdout.read() 

當我做:

C:\>python file.py 

在CMD我

#output 
#.... 
#... more output 
C:\:>#...more output 
#.... 
#...here finishes output 

爲什麼它出現「C:\>」? 是否因爲Popen爲了運行我給予的命令而需要創建一個新的進程?

在此先感謝

PD: 使用Windows Server 2008 蟒在啓動過程之後2.7.5

回答

1

的python腳本結束,和你的提示返回(打印C:\>)。但子進程仍在運行,並且其stdout和stderr默認在控制檯中寫入,如果不重定向,它將繼續輸出並寫入返回的提示。

你可能想要做的就是等待子進程結束,第一

subprocess.call([program, file]) 

(如果你只是打印標準輸出就沒有必要做任何事情因爲這是默認的。)

如果您確實需要訪問stdout,請重定向stdout並使用通信。

p = subprocess.Popen([program, file], stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
stdout, stderr = p.communicate() 
print stdout 
+0

感謝您的回答,在我的python腳本中使用它並不顯示路徑(C:\>),如果我使用通信然後打印標準輸出。問題是我應該如何處理這個過程(我應該爲此做另一個問題),如果我通過web(http:// localhost:9292/process)使用某些內容來完成此操作並將stdout返回給瀏覽器,它只會顯示在路徑(C:\>)之前的輸出 – JavierQQ23 2014-11-03 15:47:43