非決定的なユーザー入力を必要とする 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