0

我正在运行一个 Python 脚本,该脚本运行一个需要非确定性用户输入的 Java 类:

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 回答