私はこのモジュールを初めて使用しており、ドキュメントを読んでも とsubprocess
の違いがわかりません。コマンドの動作に違いがあるのでしょうか? どちらかが新しいだけでしょうか? どちらを使用するのがよいでしょうか?subprocess.popen
subprocess.run
ベストアンサー1
subprocess.run()
Python 3.5で追加されました単純化としてsubprocess.Popen
コマンドを実行して完了するまで待機したいが、その間に他の操作は行わない場合。その他の場合は、 を使用する必要がありますsubprocess.Popen
。
主な違いは、subprocess.run()
コマンドを実行し、待つ終了するには、subprocess.Popen
プロセスが終了している間に作業を続け、繰り返し呼び出すだけです。Popen.communicate()
プロセスにデータを渡したり受け取ったりするために自分自身で操作します。次に、subprocess.run()
戻り値subprocess.CompletedProcess
。
subprocess.run()
単にラップするだけなのでPopen
、Popen.communicate()
データの受け渡しや受信のためにループを作成したり、プロセスが完了するのを待ったりする必要はありません。
チェック公式文書およびsubprocess.run()
に渡されるパラメータに関する情報。Popen
communicate()