【发布时间】:2013-10-06 20:00:52
【问题描述】:
我有一个 python 脚本,需要很长时间才能完成。我想从 Java 中运行它,但也在执行时输出脚本的输出,以便我可以判断它是否正常运行。
我已经搜索并只找到了在系统命令完成后而不是在执行期间输出输出的示例。
脚本运行时有什么办法吗?
这就是我所拥有的
public void doSomething() throws IOException {
String[] callAndArgs = {"python", "/hi.py"};
Process p = Runtime.getRuntime().exec(callAndArgs);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String s;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
}
【问题讨论】:
-
FWIW,我已经复制了你的结果。不只是你。
-
FWIW:变量
stdInput真的应该被称为stdOutput。 :-) -
即使从原始
InputStream中读取单个字符也不会给我们任何东西,直到最后。我认为这是一个 python 的东西。 -
最后:如果我让它产生其他东西(在我的例子中,
java运行一个有暂停的 Java 程序),我会看到输出,而不是同时结尾。这是一个蟒蛇的事情。我不知道是什么,所以这不是答案,因此发布评论。
标签: java python unix stream output