簡體   English   中英

如何捕獲子進程的stdout輸出?

[英]How can I capture the stdout output of a child process?

我正在嘗試用Python編寫程序,並且我被告知要運行.exe文件。 當運行此.exe文件時,它會吐出大量數據,我需要在屏幕上打印一行。 我很確定我需要使用subprocess.popen或類似的東西,但我是subprocess的新手並且沒有任何線索。 任何人都有一個簡單的方法來完成這項工作?

如果您對過程執行完畢后打印輸出感興趣,@ Paolo的解決方案是完美的。 如果你想在進程運行時輪詢輸出,你必須這樣做:

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()

像這樣的東西:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM