Java中执行Python脚本中sys.stdin.readline()的问题

64 просмотра
Перейти к первому непрочитанному сообщению

Stanley.lei

не прочитано,
16 апр. 2009 г., 20:36:5716.04.2009
– BPyUG~北京Python用户组
目前我正在做一个用Java调用Python脚本的程序,Java程序将获取Python的输出stdout和stderr,并通过stdin向
python发送命令。我写了一个简单的python demo程序,如下:

#!/usr/bin/python

import sys

if __name__ == "__main__":
sys.stdout.write("I am in stdout\n")
sys.stderr.write("I am in stderr\n")


for index in range(2):
sys.stderr.write("give me command\n")
command = sys.stdin.readline()[0:7]
sys.stdout.write("get the command " + command + "\n")

ret = cmp(command.lower(), "get out")
if (ret == 0):
break;
else:
sys.stdout.write("the command is not 'get out', cmp result=
%d\n" % ret)

sys.stdout.write("exit\n")

sys.exit(100)

并在Java中通过在一个新的线程中用ProcessBuilder创建一个新的Process来管理Python的stdin,stdout,以及
stderr。但是执行时Java程序无任何显示,此时检查系统的进程,可以看到一个"python"进程正在运行。

如果以程序进行修改,将读取stdin中的输入换成:command = "get out" 来模拟命令,则Java程序能正确显示运行结果。

从这个测试结果来看,似乎在Java中无法调用包含读取stdin输入的python脚本。

不知各位是否遇到过这种问题,有什么好的解决办法没有?

多谢!

Ответить всем
Отправить сообщение автору
Переслать
0 новых сообщений