1

bashスクリプトを呼び出すPythonスクリプトがあります。bashスクリプトはいくつかのモジュールをコンパイルしますが、実行中に画面に印刷されたコンパイルの結果を確認したいと思います。

とにかく、最も重要なのは、bashスクリプトが実行時にユーザーからのかなりの数の入力を必要とすることです。Pythonスクリプトでbashスクリプトにstdin/stdoutを指定するにはどうすればよいですか?

今のところ私は使っています

(_stat, _resl) = commands.getstatusoutput("./myBashScript")

しかし、このようにして、bashの実行中にユーザーに何もプロンプトが表示されることはありません...

乾杯

4

3 に答える 3

3

(必要に応じて)使用subprocessし、stdin / stdout / stderrを指定しない場合、これらは正常に動作します。例えば:

# lol.py
import subprocess
p = subprocess.Popen(['cat'])
p.wait()

$ python lol.py
hello
hello
catting
catting

stdout好きなように処理することもできます。

# lol.py
import subprocess

p = subprocess.Popen(['cat'], stdout=subprocess.PIPE)
p.wait()

print "\n\nOutput was:"
print p.stdout.read()

$ python lol.py
hello
catting

^D

Output was:
hello
catting
于 2012-05-04T13:04:40.070 に答える
1

エンボイライブラリを試してみてください。

import envoy
r = envoy.connect('./myBashScript')
r.send('input text') # send info on std_in
r.expect('output text') # block until text seen
print r.std_out # print whatever is in the std_out pipe
于 2012-05-04T13:08:13.667 に答える
0

os.systemを使用して、gnome-terminalなどのターミナルウィンドウを開き、bashスクリプトを実行できます。

于 2012-05-04T13:00:43.570 に答える