作業中に問題が発生しました。ここにあります。シェルスクリプトと対話するためのPythonスクリプトの作成方法
私はいくつかのスクリプト(主にシェルスクリプト)を実行する必要があり、それらを自動的に実行するPythonスクリプトを書きたいと思います。これらのシェルスクリプトの1つは、実行中に対話型入力が必要です。私が困っていることは、入力プロンプトを読む方法を見つけることができないため、続行するには何を入力するか決定できないということです。
私はこのような何かに問題を単純化:
を内部greeter.sh
を実行mediator.py
という名前のスクリプトは、あります。 mediator
はgreeter
の入力プロンプトを受け取ってユーザーに出力し、ユーザーの入力を受け取り、greeter
に渡します。 mediator
は、ユーザーの観点からはgreeter
とまったく同じように動作する必要があります。ここで
はgreeter.sh
です:
#! /bin/bash
echo "Please enter your name: " # <- I want 'mediator.py' to read this prompt and show it to me, and then get what I input, then pass my input to 'greeter.sh'
read name
echo "Hello, " $name
は、私は次の順序でこれをしたい:
- ユーザーを(それは私です)
mediator.py
mediator
実行greeter.sh
内部で実行mediator
入力プロンプトがgreeter
を入力し、画面に出力します。 (このとき、greeter
は、ユーザーの入力を待っている。これは私がで立ち往生主な問題である)- ユーザー入力文字列(例えば、「マイク・」)、
mediator
文字列「マイク」を取得し、送信それgreeter
- から
greeter
名「マイク」を取得し、挨拶を得る挨拶に mediator
を印刷し、画面に出力して。
は、私はいくつかの解決策を検索しPIPE
に向けサブプロセスのstdout
とsubprocess
モジュールにPopen
機能を使用することを決定し、それはこのようなものです:
sb = subprocess.Popen(['sh', 'greeter.sh'], stdout = subprocess.PIPE, stdin = stdout, stderr = stdout)
が、私はメインを解決することはできません上記のの手順3の問題。誰かが私に助けの助言をくれますか?どうもありがとう!
感謝が必要な場合は、個別のモジュールに分割することができます。私は仕事でそれを会ったこの使用法のシナリオを考え出した。私はいくつかのシェルスクリプトを実行する必要があり、私は自動的にそれらを実行するPythonスクリプトを記述したいと思います。これらのシェルスクリプトの1つは、exexuting中にいくつかのオプションを入力する必要があるため、シェルスクリプトのプロンプトを表示し、実行するために入力するオプションを決定する必要があります。それでおしまい。 –
あなたはこのコンテキストであなたの質問を編集する必要があります - それはどういうわけか違う問題です。私は 'サブプロセス'エキスパートFWIWに任せます... –
ありがとう〜質問は今再説明されました。 –