使用 subprocess.call() 呼叫子程序時,存取被呼叫程序產生的輸出可能會很困難。本文解決了這個問題並提供了解決方案。
傳統上,嘗試使用StringIO.StringIO 物件擷取輸出(如下所示)會導致錯誤:
import StringIO ... stdout = StringIO.StringIO() ... subprocess.call(...)
出現此錯誤是因為StringIO 物件缺少所需的fileno()方法subprocess.call().
為了規避此限制,Python 2.7 及後續版本引入了 subprocess.check_output 函數。該函數有效地捕獲子進程的標準輸出並將其作為字串傳回。
這是一個簡單的範例,示範了Linux 中subprocess.check_output() 的用法:
import subprocess output = subprocess.check_output(["ping", "-c", "1", "8.8.8.8"]) print(output)
注意Linux ping 指令使用「-c」指定傳送封包的數量,而Windows使用「-n」指定發送資料包的數量
有關深入解釋和其他用例,請參閱以下Stack Overflow 答案:
[如何運行指令並得到輸出Python? ](https://stackoverflow.com/questions/1365265/how-to-run-a-command-and-get-the-output-in-python)
以上是如何在 Python 中檢索子程序的輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!