首頁 >後端開發 >Python教學 >如何在 Python 中抑制子程序的詳細輸出?

如何在 Python 中抑制子程序的詳細輸出?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-09 00:33:111013瀏覽

How Can I Suppress Verbose Output from Subprocesses in Python?

抑制子程序的過多輸出

許多命令列工具(例如 eSpeak)會顯示詳細輸出及其預期操作。這可能會使 shell 變得混亂,導致難以讀取先前的輸出或與提示進行互動。

對於使用 subprocess 模組呼叫此類工具的 Python 腳本,靜默其輸出可以增強可讀性和可用性。一種有效的方法是將標準輸出(STDOUT)和標準錯誤(STDERR)重新導向到空裝置。

Python 3.3 的重定向輸出

對於 Python 3.3 及更高版本,subprocess 模組提供DEVNULL 常數作為空設備。透過將 DEVNULL 傳遞給 subprocess.call() 的 stdout 和 stderr 參數,可以有效抑制子程序的輸出。

import subprocess

subprocess.call(['echo', 'foo'], 
    stdout=subprocess.DEVNULL,
    stderr=subprocess.STDOUT)

重定向 Python 2 及更低版本的輸出

在早期版本中Python 版本(包括 2.7)中,DEVNULL 常數不可用。相反,您可以手動打開一個空設備並重定向到它。

import os

FNULL = open(os.devnull, 'w')
subprocess.call(['echo', 'foo'], 
    stdout=FNULL, 
    stderr=subprocess.STDOUT)

等效的Shell 腳本

上述Python 程式碼的命令列等效項是:

retcode = os.system("echo 'foo' >& /dev/null")

透過利用這些技術,您可以沉默Python 腳本中的詳細子進程輸出,保持shell 乾淨並提高進一步互動的可讀性。

以上是如何在 Python 中抑制子程序的詳細輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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