0

非決定的なユーザー入力を必要とする Java クラスを実行する Python スクリプトを実行しています。

import sys
import subprocess
from subprocess import Popen, PIPE

p = Popen("java myclass", shell=True, stdout=subprocess.PIPE)

while True:
    inline = p.stdout.readline()
    if not inline:
        break

sys.stdout.write(inline)
sys.stdout.flush()

を使用しSystem.out.print()て出力を表示すると、出力が正しく表示されます。ただし、ユーザー入力のプロンプトが で出力されたSystem.out.print()場合、出力は表示されません。に切り替えp.stdout.readline()てみましp.stdout.read()たが、出力が表示されません。改行のない入力プロンプトを表示する方法はありますか?

編集

たとえば、Java クラスに次のものが含まれているとします。

System.out.println("Message 1);
System.out.println("Message 2);
System.out.print("Enter a number:")

純粋な Java コードを実行すると、3 行すべてが表示されます。

Python を介して実行されるコードは、次のもののみを表示します。

Message 1
Message 2
4

1 に答える 1

2
p1 = subprocess.Popen(["/usr/bin/java", "MyClass"], stdout=subprocess.PIPE)
print p1.stdout.read() 
于 2013-04-25T20:47:30.053 に答える