來自subprocess.communicate() 的流式輸出
Python 的subprocess.communicate() 函數對於捕獲進程的標準輸出對於捕獲進程的標準輸出非常有用。但是,它通常會立即返回所有輸出。這對於長時間產生輸出的流程來說可能會很不方便。為了解決這個問題,我們探索了一種以串流方式列印進程標準輸出的每一行的技術。
解
透過採用迭代機制,我們可以擷取行標準輸出一旦成為available:
from subprocess import Popen, PIPE # Launch a process with buffering set to 1 byte p = Popen(["cmd", "arg1"], stdout=PIPE, bufsize=1) # Iterate over the stdout lines as they become available with p.stdout: for line in iter(p.stdout.readline, b''): print(line, end='') # Wait for the process to terminate p.wait()
解釋解釋
p.wait():一旦迭代器耗盡,此函數將等待進程完成後再繼續。
以上是如何在 Python 中逐行串流子進程輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!