0

OS.System コマンドを使用して Python スクリプトを呼び出しています。

例:

OS.System("call jython script.py")

私が呼び出しているスクリプトには、次のコマンドがあります。

x = raw_input("Waiting for input")

コマンド ラインから script.py を実行すると問題なくデータを入力できますが、自動化された方法で実行すると EOFError が発生します。これは、システムがコンピューターで実行されていることを想定しているため、この方法で入力データを受け取ることができなかったために発生することを過去に読んだことがあります。

問題は、自動化された方法で実行されている間、Python がユーザー入力を待機するようにするにはどうすればよいかということです。

4

2 に答える 2

2

問題は、子スクリプトを実行する方法です。os.system() を使用しているため、スクリプトの入力チャネルはすぐに閉じられ、raw_input() プロンプトが EOF (ファイルの終わり) に達します。そして、それが起こらなかったとしても、raw_input() を使用していることを考えると、実際に入力テキストを子に送信する方法はありません。

代わりにsubprocess モジュールを使用する必要があります。

import subprocess
from subprocess import PIPE

p = subprocess.Popen(["jython", "script.py"], stdin=PIPE, stdout=PIPE)
print p.communicate("My input")
于 2009-07-21T23:14:22.513 に答える
0

あなたの質問は少し不明確です。Python スクリプトを呼び出すプロセスは何ですか? また、どのように実行されていますか? 親プロセスに標準入力がない場合、子プロセスにも標準入力はありません。

于 2009-07-21T22:52:15.070 に答える