在Python 中,如果您想使用subprocess 呼叫產生大量輸出的Linux 實用程序,可能會帶來挑戰增量地捕獲並處理輸出。
在父進程中,proc.stdout 語句中的 for 行在迭代之前讀取整個輸入 它。這可能會導致在產生大量輸出之前,輸出不會出現在您的應用程式中。
要解決此問題,請改用 proc.stdout.readline():
import subprocess proc = subprocess.Popen(['python', 'fake_utility.py'], stdout=subprocess.PIPE) while True: line = proc.stdout.readline() if not line: break #the real code does filtering here print "test:", line.rstrip()
This解決方案可讓您過濾並列印子流程中可用的每一行輸出。請記住,您可能仍然需要考慮子進程的緩衝行為。
以上是如何在Python中有效率地逐行讀取和處理子進程輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!