如何从java运行python脚本?

loc*_*ock 5 java

我有这个java应用程序并遇到了解析STDF的要求.

实际上我只需要获取stdf文件的FAR,MIR和MRR部分.sourceforge上存在一个stdf4j,但由于缺少文档,我无法使用它.

解决方法是使用用python编写的stdfparser并且相对更直接并且更容易完成工作,实际上我已经修改了以满足我的需求.

所以现在我只需要详细调用这个脚本并用Java读取生成的文件,然后继续使用现有的应用程序.

问题是在使用时:

Process p = r.exec("cmd /c python parser.py sample_data.std.gz -v test.txt");
Run Code Online (Sandbox Code Playgroud)

生成的文本文件始终为空.(注意我已经在实际的命令行上运行了这个并成功检索了我需要的内容.)

有什么我错过了,或者有更好的选择.(我试图避免使用jython,因为我无法在生产环境中安装它.)

Mik*_*ark 6

您可能应该调用,p.waitFor();以便在外部进程执行完之后,您的Java程序不会继续运行.

更新1:另外,还要确保你正在阅读所有字节出的p.getErrorStream()p.getInputStream().如果不这样做可能会导致这个过程失败.

更新2:您可能还需要检查错误代码的进程返回代码.通过waitFor()返回值访问进程返回码.