从Java调用的Python脚本获取错误输出
我有一些调用Python脚本的Java代码:从Java调用的Python脚本获取错误输出,java,python-3.x,runtime.exec,Java,Python 3.x,Runtime.exec,我有一些调用Python脚本的Java代码: String[] cmd = new String[]{"python", "path/to/script", "arg1", "arg2"} Runtime rt = Runtime.getRuntime(); Process pr = rt.exec(cmd); 只要Python脚本不包含任何错误,它就可以正常工作,但一旦出现错误,它就会崩溃。但是,如果直接从命令行运行Python脚本,我不会得到错误消息,因此我必须自己搜索哪里出了问题。效率不
String[] cmd = new String[]{"python", "path/to/script", "arg1", "arg2"}
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);
只要Python脚本不包含任何错误,它就可以正常工作,但一旦出现错误,它就会崩溃。但是,如果直接从命令行运行Python脚本,我不会得到错误消息,因此我必须自己搜索哪里出了问题。效率不高
是否可以通过在Java代码中添加一些行来获取此消息 有关正确创建和处理流程的许多好提示,请参阅。然后忽略它引用exec
,并使用ProcessBuilder
创建流程。还可以将字符串arg
分解为字符串[]args
,以说明包含空格字符的路径之类的情况
现在,对于手头问题的细节,听起来好像是错误流的输出丢失了。正如您所注意到的,调用
proc.getErrorStream()
并处理该输出应该符合要求。这解决了我的问题:proc.getErrorStream()
就是我要找的。如果你写下你的评论作为回答,我可以接受。(这个错误破坏了脚本,我就是找不到:我在elif
..”后面忘了一个冒号)“我在elif
..”后面忘了一个冒号”这些错误困扰着我们所有人。有错误输出是件好事。