ホームページ >バックエンド開発 >Python チュートリアル >Python の「subprocess」モジュールで外部コマンド出力を効率的にパイプするにはどうすればよいですか?

Python の「subprocess」モジュールで外部コマンド出力を効率的にパイプするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-22 16:17:14388ブラウズ

How Can I Efficiently Pipe External Command Outputs in Python's `subprocess` Module?

サブプロセスを使用してパイプを使用して外部コマンドを実行する

サブプロセス モジュールを使用する場合、パイプを使用して 1 つの外部コマンドの出力を入力として接続する必要がある場合があります。別のものに。これを実現するには、subprocess.check_output() 関数で shell=True パラメータを利用できます。

ただし、セキュリティ上の懸念があるため、shell=True を使用する場合は注意して進めることが重要です。代わりに、コマンドごとに個別のプロセスを作成し、それに応じて出力をパイプすることをお勧めします。

さらに詳しく説明するには、次の例を検討してください。

ps = subprocess.Popen(('ps', '-A'), stdout=subprocess.PIPE)
output = subprocess.check_output(('grep', 'process_name'), stdin=ps.stdout)
ps.wait()

このシナリオでは、 ps コマンドは次のとおりです。が実行され、その出力が grep コマンドにパイプされます。 grep からの結果の出力は、「output」変数に保存されます。

また、shell=True が望ましくない場合は、str.find を使用して同じ結果を得ることができます。

output = subprocess.check_output(('ps', '-A'))
process_found = 'process_name' in output

以上がPython の「subprocess」モジュールで外部コマンド出力を効率的にパイプするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。