从 Java 调用的 Python 脚本获取错误输出
Get error output from Python script called from Java
我有一些 Java 调用 Python 脚本的代码:
String[] cmd = new String[]{"python", "path/to/script", "arg1", "arg2"}
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);
只要 Python 脚本不包含任何错误,它就可以正常工作,但一旦出现错误,它就会中断。但是,如果我直接从命令行 运行 Python 脚本,我不会收到错误消息,所以我必须自己搜索哪里出了问题。效率不高。
是否可以通过在我的 Java 代码中添加一些行来获取此消息?
请参阅 When Runtime.exec()
won't,了解有关正确创建和处理流程的许多有用提示。然后忽略它引用 exec
并使用 ProcessBuilder
创建进程。还要将 String arg
分解为 String[] args
以说明包含 space 个字符的路径。
现在具体说明手头的问题,听起来好像是错误流的输出丢失了。如您所述,调用 proc.getErrorStream()
并处理该输出应该符合要求。
我有一些 Java 调用 Python 脚本的代码:
String[] cmd = new String[]{"python", "path/to/script", "arg1", "arg2"}
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(cmd);
只要 Python 脚本不包含任何错误,它就可以正常工作,但一旦出现错误,它就会中断。但是,如果我直接从命令行 运行 Python 脚本,我不会收到错误消息,所以我必须自己搜索哪里出了问题。效率不高。
是否可以通过在我的 Java 代码中添加一些行来获取此消息?
请参阅 When Runtime.exec()
won't,了解有关正确创建和处理流程的许多有用提示。然后忽略它引用 exec
并使用 ProcessBuilder
创建进程。还要将 String arg
分解为 String[] args
以说明包含 space 个字符的路径。
现在具体说明手头的问题,听起来好像是错误流的输出丢失了。如您所述,调用 proc.getErrorStream()
并处理该输出应该符合要求。