通过Java

时间:2016-10-15 13:55:19

标签: java python

我实现了Python应用程序和Java应用程序。 假设我的Python应用程序因此返回True。

我想通过Java应用程序运行Python应用程序,将Python应用程序的结果接收到我的Java应用程序中,并在我的Java应用程序中进行额外的计算。

我使用Java中的Process来完成这项任务。 在我的示例中,Python应用程序以config.ini文件作为参数运行。

String path = "C:\\Python_Project\\run_app.py configuration\\config.ini";
Process p = Runtime.getRuntime().exec("python " + path);

它不起作用。我没有从Python应用程序收到任何有趣的东西,Java应用程序没有失败。

我决定通过命令提示符运行它,发现运行失败,因为在我的一个内部文件中我使用了这样的导入:     来自inner_module导入Object1

这可能是问题吗?我应该从Python app目录运行它?但是如何?

我有两个问题:

  1. 这是改变运行我的python应用程序的路径吗?我从Java应用程序目录运行Java应用程序,我必须在Python应用程序目录中运行Python应用程序?如何更改透视图?

  2. Process和exec的使用是否良好?我应该用别的吗? 我如何使用Process获取真正值的Python应用程序?

1 个答案:

答案 0 :(得分:0)

您可以尝试ProcessBuilder,它允许您设置工作目录。类似的东西:

ProcessBuilder pb = new ProcessBuilder(program, argument);
pb.directory(new File("path/to/python/directory"));
Process process = pb.start();

您可以通过从process.getInputStream()

中读取来获取脚本的输出
BufferedReader reader = new BufferedReader(
    new InputStreamReader(process.getIntputStream()));

String output;
while((output=reader.readLine()) != null)
    System.out.println(output);