許多命令列工具(例如 eSpeak)會顯示詳細輸出及其預期操作。這可能會使 shell 變得混亂,導致難以讀取先前的輸出或與提示進行互動。
對於使用 subprocess 模組呼叫此類工具的 Python 腳本,靜默其輸出可以增強可讀性和可用性。一種有效的方法是將標準輸出(STDOUT)和標準錯誤(STDERR)重新導向到空裝置。
對於 Python 3.3 及更高版本,subprocess 模組提供DEVNULL 常數作為空設備。透過將 DEVNULL 傳遞給 subprocess.call() 的 stdout 和 stderr 參數,可以有效抑制子程序的輸出。
import subprocess subprocess.call(['echo', 'foo'], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
在早期版本中Python 版本(包括 2.7)中,DEVNULL 常數不可用。相反,您可以手動打開一個空設備並重定向到它。
import os FNULL = open(os.devnull, 'w') subprocess.call(['echo', 'foo'], stdout=FNULL, stderr=subprocess.STDOUT)
上述Python 程式碼的命令列等效項是:
retcode = os.system("echo 'foo' >& /dev/null")
透過利用這些技術,您可以沉默Python 腳本中的詳細子進程輸出,保持shell 乾淨並提高進一步互動的可讀性。
以上是如何在 Python 中抑制子程序的詳細輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!