2009-05-28 43 views
7

我想在Python中編寫一個程序,並被告知要運行一個.exe文件。當這個.exe文件運行時,它會吐出大量的數據,並且我需要將一行打印到屏幕上。我很確定我需要使用subprocess.popen或類似的東西,但我是新來的子進程,並沒有任何線索。任何人都有一個簡單的方法讓我完成這個任務?!?謝謝!!如何捕獲子進程的stdout輸出?

回答

17

事情是這樣的:

import subprocess 
process = subprocess.Popen(["yourcommand"], stdout=subprocess.PIPE) 
result = process.communicate()[0] 
+0

如何讀取某一行?那是0哪裏? 是的,我有興趣在打印輸出完成後的過程。 也有你的「你的命令」的exe擴展去那裏? – Tyler 2009-05-28 20:57:11

23

@保羅的解決方案是完美的,如果你有興趣在這個過程中完成執行後打印輸出。如果你想在過程運行時輪詢輸出,你必須這樣做:

process = subprocess.Popen(cmd, stdout=subprocess.PIPE) 

while True: 
    out = process.stdout.readline(1) 
    if out == '' and process.poll() != None: 
     break 
    if out.startswith('myline'): 
     sys.stdout.write(out) 
     sys.stdout.flush() 
相關問題