0
閱讀是System.out.print Java的我正在運行,需要不確定性用戶輸入一個Java類的Python腳本:通過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()
,但是沒有輸出顯示。有沒有辦法顯示沒有回車的輸入提示?
EDIT
例如,如果Java類包含下列:
System.out.println("Message 1);
System.out.println("Message 2);
System.out.print("Enter a number:")
運行純Java代碼將顯示所有的3行。
通過Python的運行將僅顯示以下的代碼:
Message 1
Message 2
可以使用'strip'以除去回車:'直列= p.stdout.readline()條() ' – 2013-04-25 20:26:54
我很困惑。所有System.out打印都是通過STDOUT完成的,所以閱讀它應該沒有什麼不同。但是,System.in正在從STDIN讀取數據,因此您必須使用適當的鍵組合鍵寫出「用戶輸入」以指示輸入已停止。 – CodeChimp 2013-04-25 20:28:18