ホームページ > バックエンド開発 > Python チュートリアル > Python でサブプロセスの出力を取得するにはどうすればよいですか?

Python でサブプロセスの出力を取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-28 17:40:15
オリジナル
867 人が閲覧しました

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」を使用します。

さらなる説明と使用例

詳細な説明と追加の使用例については、次のスタック オーバーフローの回答を参照してください:

[コマンドの実行方法]そして出力を取得しますPython?](https://stackoverflow.com/questions/1365265/how-to-run-a-command-and-get-the-output-in-python)

以上がPython でサブプロセスの出力を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート