例えば、シェルスクリプトはプロンプトで整数をとり、それを返します。Python:手動入力でシェルスクリプトを実行
Enter an integer:
--> 3
3
私はsubprocess.check_call(["./myScript"])
を使用してシェルスクリプトを実行しています。上記の例のように"3"
を自動送信するにはどうすればよいですか?これまでの検索では、このような手動入力ではなく、コマンドライン引数を使用してスクリプトを実行する方法だけが回復しました。
例えば、シェルスクリプトはプロンプトで整数をとり、それを返します。Python:手動入力でシェルスクリプトを実行
Enter an integer:
--> 3
3
私はsubprocess.check_call(["./myScript"])
を使用してシェルスクリプトを実行しています。上記の例のように"3"
を自動送信するにはどうすればよいですか?これまでの検索では、このような手動入力ではなく、コマンドライン引数を使用してスクリプトを実行する方法だけが回復しました。
おそらくsubprocess.Popen.communicate()
機能を使用します。ドキュメントはかなり表現力があります。
は、communicate
とやり取りできるプロセスを作成するために使用できます。 communicate
は、作成されたプロセスに渡されるパラメータとして文字列を受け取り、タプル(stdout, stderr)
を返します。以下は、それとの通信2つのPythonスクリプトの簡単な例です:
子供
nums = raw_input()
print sum((int(n) for n in nums.split()))
親
import subprocess
p = subprocess.Popen(['python', 'test.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, err = p.communicate('3 4 5')
print 'From other process: ' + out
出力
From other process: 12
入力(「3」)はどのように取得されますか? 'input()'、 'raw_input()'などを使っていますか?そして、あなたはPythonバージョンを持っていますか? – linusg
OPはPythonから入力を受け取っていないので、pythonから入力を求めるシェルスクリプトに入力を渡したい – codefreak