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」を使用します。
詳細な説明と追加の使用例については、次のスタック オーバーフローの回答を参照してください:
[コマンドの実行方法]そして出力を取得しますPython?](https://stackoverflow.com/questions/1365265/how-to-run-a-command-and-get-the-output-in-python)
以上がPython でサブプロセスの出力を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。