【问题标题】:How to Run a Python file from Java using an Absolute Path?如何使用绝对路径从 Java 运行 Python 文件?
【发布时间】:2014-01-12 23:55:56
【问题描述】:

我想运行一个名为 foo 的 python 脚本。我有绝对的路径,可以说: /用户/我/pythonscripts/

我试过跑步:

String cmd="/Users/me/pythonscripts/"
String py="foo"
Runtime.getRuntime().exec("cd "+cmd);
Runtime.getRuntime().exec("python "+py+".py");

但这确实会运行 python 文件。

【问题讨论】:

标签: java python


【解决方案1】:

尝试使用类似...的东西

Runtime.getRuntime().exec("python "+cmd + py + ".py");

相反。每个exec 是它自己的进程,多个exec 彼此没有关系...

您还应该考虑改用ProcessBuilder,因为这为您提供了出色的可配置性,例如,您可以更改执行路径上下文...

ProcessBuilder pb = new ProcessBuilder("python", py + ".py");
pb.directory(new File(cmd));
pb.redirectError();
//...
Process p = pb.start();

另外,请注意,Python 的输出流存在问题,这可能会阻止 Java 读取它,直到它完全完成为止......

更多详情请关注Java: is there a way to run a system command and print the output during execution?

另外,请确保 python 在 shell 的搜索路径中,否则您还需要指定命令的完整路径

【讨论】:

  • 感谢 ProcessBuilder 的提示,非常有帮助!现在效果很好。
  • 只是没有执行 python 文件,不知道是什么问题。不过,我评论的有点过早,我在流程构建器中完成了这项工作。
【解决方案2】:

这对我有用

    public static void main(String[] args)  throws IOException{

    Runtime runtime = Runtime.getRuntime();
    Process p1 = runtime.exec("D:\\programs\\Anaconda3\\Scripts\\spyder.exe \"C:\\Users\\Al-Hanouf\\codes\\PageRank.py\"");
    System.out.print("is process alive = "+p1.isAlive());

}

【讨论】:

    猜你喜欢
    • 2016-10-04
    • 2014-05-31
    • 2021-10-18
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2021-05-31
    • 1970-01-01
    相关资源
    最近更新 更多