次の機能を実現する方法:
input
Pythonはシェルコマンドを実行します。シェルコマンドはユーザーが何かをするのを待ちます- ユーザーがを入力した後
input
、プログラムはいくつかの応答を返しますoutput
- Pythonは
output
あなたはおそらく欲しいですsubprocess.Popen
。プロセスと通信するには、このcommunicate
メソッドを使用します。
例えば
process=subprocess.Popen(['command','--option','foo'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
inputdata="This is the string I will send to the process"
stdoutdata,stderrdata=process.communicate(input=inputdata)
同期動作の場合、subprocess.run()
から始まる関数を使用できますPython v3.5
。
subprocess.popenとsubprocess.runの受け入れられた答えの違いは何ですか?で述べたように:
主な違いは、コマンドを
subprocess.run
実行してコマンドが終了するのを待つsubprocess.Popen
一方で、プロセスが終了するまで作業を続行し、繰り返しsubprocess.communicate
自分自身を呼び出してプロセスにデータを渡したり受信したりできることです。