首頁 >後端開發 >Python教學 >如何在Python中有效率地逐行讀取和處理子進程輸出?

如何在Python中有效率地逐行讀取和處理子進程輸出?

Barbara Streisand
Barbara Streisand原創
2024-12-14 16:38:11825瀏覽

How to Efficiently Read and Process Subprocess Output Line by Line in Python?

如何逐行讀取Subprocess stdout

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn