首頁 >後端開發 >Python教學 >如何在 Python 中檢索子程序的輸出?

如何在 Python 中檢索子程序的輸出?

Susan Sarandon
Susan Sarandon原創
2024-11-28 17:40:15815瀏覽

How Can I Retrieve the Output of a Subprocess in Python?

從子程序檢索輸出

使用 subprocess.call() 呼叫子程序時,存取被呼叫程序產生的輸出可能會很困難。本文解決了這個問題並提供了解決方案。

克服輸出檢索挑戰

傳統上,嘗試使用StringIO.StringIO 物件擷取輸出(如下所示)會導致錯誤:

import StringIO

...
stdout = StringIO.StringIO()
...
subprocess.call(...)

出現此錯誤是因為StringIO 物件缺少所需的fileno()方法subprocess.call().

解決方案:subprocess.check_output()

為了規避此限制,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中文網其他相關文章!

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