パイプで `subprocess` コマンドを使用する方法 質問する

パイプで `subprocess` コマンドを使用する方法 質問する

subprocess.check_output()を と一緒に使用したいのですps -A | grep 'process_name'が、さまざまな解決策を試しましたが、今のところ何も機能していません。誰かやり方を教えてもらえますか?

ベストアンサー1

モジュールでパイプを使用するにはsubprocessshell=True次の点に注意してください。セキュリティに関する考慮事項. の使用は推奨されませんshell=True。ほとんどの場合、同じ問題に対してよりよい解決策が存在します。

ただし、これはさまざまな理由からあまりお勧めできません。特にセキュリティ上の理由が挙げられます。代わりに、psgrepプロセスを別々に作成し、次のように、一方からの出力をもう一方にパイプします。

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

ただし、この特定のケースでは、簡単な解決策は、出力で を呼び出してからsubprocess.check_output(('ps', '-A'))を呼び出すことです。str.find

おすすめ記事