0

を使用してPythonで別のプログラムを呼び出すことができます

subprocess.call(["do_something.bat"])

のstdin入力を収集できるかどうか知りたいdo_something.batですか?

do_something.batはJavaプログラムのランチャーであり、Javaプログラムは、プロジェクト名、バージョンなどのプロジェクト固有の情報を入力するようにユーザーに促し、ユーザー入力に従ってプロジェクトスケルトンを生成します。

Pythonを使用してこれを呼び出しdo_something.bat、すべてのプロジェクトファイルを生成した後、プロジェクトルートの下の特定のディレクトリに移動し続ける必要がありますが、プロジェクト名を知っている必要があります。ユーザーが以前に入力したプロジェクト名を取得できますか?

4

2 に答える 2

2

do_something.batユーザーにどのようにプロンプ​​トを表示するかによって少し異なります。

単純に標準入力から読み取る場合、プログラムは仲介者として機能できます。の出力を促し、do_something.batユーザーの応答を読み取り、その応答をパイプで の標準入力に戻すことができますdo_something.bat

そうでなければ、適応しなければできないと思いますdo_something.bat

于 2012-11-12T15:14:03.780 に答える
1

プログラムが要求する正確なパラメーターと、それらを要求する順序がわかっている場合は、自分で引数を収集してサブプロセスに転送できます。

例えば。

from subprocess import Popen, PIPE

# get inputs
input1 = ...
input2 = ...

child = Popen("do_something.bat", stdin=PIPE)
# Send data to stdin. Would also return data from stdout and stderr if we set 
# those arguments to PIPE as well -- they are returned as a tuple
child.communicate("\n".join([input1, input2, ...]))

if child.returncode != 0:
    print "do_something.bat failed to execute successfully" 
于 2012-11-12T15:26:09.290 に答える