2016-05-09 4 views
0

例えば、シェルスクリプトはプロンプトで整数をとり、それを返します。Python:手動入力でシェルスクリプトを実行

Enter an integer: 
--> 3 
3 

私はsubprocess.check_call(["./myScript"])を使用してシェルスクリプトを実行しています。上記の例のように"3"を自動送信するにはどうすればよいですか?これまでの検索では、このような手動入力ではなく、コマンドライン引数を使用してスクリプトを実行する方法だけが回復しました。

+0

入力(「3」)はどのように取得されますか? 'input()'、 'raw_input()'などを使っていますか?そして、あなたはPythonバージョンを持っていますか? – linusg

+0

OPはPythonから入力を受け取っていないので、pythonから入力を求めるシェルスクリプトに入力を渡したい – codefreak

答えて

1

は、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 
関連する問題