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

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

Barbara Streisand
發布: 2024-12-14 16:38:11
原創
824 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板