首頁 > 後端開發 > Python教學 > 如何使用Python的「子進程」顯示即時程式輸出?

如何使用Python的「子進程」顯示即時程式輸出?

Mary-Kate Olsen
發布: 2024-11-15 09:55:02
原創
940 人瀏覽過

How to Display Real-time Program Output with Python's `subprocess`?

使用子程序存取即時程式輸出

問題:

我們如何取得在Phon中使用子進程即時程式輸出?具體來說,我們如何在不緩衝輸出的情況下顯示命令列程式的進度?

答案:

從執行的程式中取得即時輸出子流程,我們可以使用以下技巧:

import subprocess

p = subprocess.Popen('svnadmin verify /var/svn/repos/config',
                     stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True,
                     bufsize=0)  # Set bufsize to 0 for no buffering

while True:
    line = p.stdout.readline()
    if not line:
        break
    print(line.replace('\n', ''))
登入後複製

說明:

  • 我們在Popen 中將bufsize設定為 0 以停用輸出緩衝。
  • 在 while 迴圈中,我們使用 readline() 不斷從 p.stdout 讀取行。
  • 如果沒有行可用,循環中斷,程式退出。
  • 我們可以處理或顯示收到的每一行,提供即時輸出。

注意:

  • 此方法可能不適用於所有系統或所有程式。
  • 對於 Python 3.8 及更高版本,請考慮使用 asyncio 而不是原始檔案描述符來處理子進程輸出。

以上是如何使用Python的「子進程」顯示即時程式輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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