首页 > 解决方案 > 从 Java 运行 python 脚本时出错

问题描述

我一直在尝试从 Java 调用 Python 3.x 程序。我需要的是从 python 获取输出并将其写入文件。这就是我所做的。这是创建一个 Json 文件,但不提供输出。请帮帮我。

public static void main(String[] args) throws ScriptException, IOException {
    Process p = Runtime.getRuntime().exec("python <path to the file>/reg.py");
    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String ret = in.readLine();
    System.out.println(ret);

    BufferedWriter out = new BufferedWriter(new FileWriter("<some path>/output.json"));
    out.write(ret);
    out.close();
}

标签: javapython-3.x

解决方案


好的,所以在我们在评论中讨论之后,您的脚本会抛出错误,因为它找不到文件 output.txt。现在,问题是这被记录到错误流而不是常规错误流中。您应该做的是打开该流并阅读它:

BufferedReader in = new BufferedReader(new InputStreamReader(p.getErrorStream()));

实际上,您可以打开两个流:errorStream 和 outputStream 并首先读取错误流以检查它是否包含某些内容(这意味着执行失败)。如果没有,请打开 outputStream 并正常读取其内容。


推荐阅读