subprocess.popenとsubprocess.runの違いは何ですか?質問する

subprocess.popenとsubprocess.runの違いは何ですか?質問する

私はこのモジュールを初めて使用しており、ドキュメントを読んでも とsubprocessの違いがわかりません。コマンドの動作に違いがあるのでしょうか? どちらかが新しいだけでしょうか? どちらを使用するのがよいでしょうか?subprocess.popensubprocess.run

ベストアンサー1

subprocess.run() Python 3.5で追加されました単純化としてsubprocess.Popenコマンドを実行して完了するまで待機したいが、その間に他の操作は行わない場合。その他の場合は、 を使用する必要がありますsubprocess.Popen

主な違いは、subprocess.run()コマンドを実行し、待つ終了するには、subprocess.Popenプロセスが終了している間に作業を続け、繰り返し呼び出すだけです。Popen.communicate()プロセスにデータを渡したり受け取ったりするために自分自身で操作します。次に、subprocess.run()戻り値subprocess.CompletedProcess

subprocess.run()単にラップするだけなのでPopenPopen.communicate()データの受け渡しや受信のためにループを作成したり、プロセスが完了するのを待ったりする必要はありません。

チェック公式文書およびsubprocess.run()に渡されるパラメータに関する情報。Popencommunicate()

おすすめ記事