【问题标题】:Running python script, as exe, with parameters, from Java从 Java 运行带有参数的 python 脚本,作为 exe
【发布时间】:2019-06-04 07:25:55
【问题描述】:

我找到了一些关于如何做到这一点的提示,但是将它们组合在一起不起作用,所以我寻求帮助。

我在 python 中有一个脚本,它从参数(参数?)(sys.argv)中获取它的变量。我已经使用 PyInstaller 创建了一个 exe。

现在我需要从 java 打开这个带有参数的文件。

问题是,我收到错误:无法执行脚本 [ScriptName]。

这是我的java代码:

try {
    ProcessBuilder process = new ProcessBuilder(Location, arg1, arg2, arg3, arg4,
                                                arg5, arg6, arg7, arg8, arg9,
                                                arg10, arg11, arg12, arg13, arg14);
    Process proc = process.start();
    proc.waitFor();
} catch (IOException | InterruptedException e) {
    //logging the result
    e.printStackTrace();
}

这是我在 python 中的代码:

arg1 = sys.argv[2]
arg2 = sys.argv[3]
arg3 = sys.argv[4]
arg4 = sys.argv[5]
arg5 = sys.argv[6]
(...)

我尝试了不同的“argv 位置”(即 arg1 = sys.argv[1] 等),但没有任何效果。

提前感谢您的帮助。

【问题讨论】:

标签: java python arguments exe


【解决方案1】:

你可以尝试用你的所有参数组成一个调用字符串,像这样(你应该使用 StringBuilder 或类似的东西来整理代码):

String call = "python yourscript.py argument1 argument2 argument3";
Process p = Runtime.getRuntime().exec(call);

到目前为止,这一直对我有用,甚至不需要 .exe。 此外,您应该能够以完全相同的方式运行 .exe。

【讨论】:

    【解决方案2】:

    上面提到的都没有奏效,我决定通过 txt 文件来做(用 java 编写 txt 并在 python 中读取它)。

    我认为最好的选择是通过数据库传递数据,但在这种情况下它不是一个选项:(

    顺便说一句。我也尝试通过 argparse 而不是 sys.arg 获取值,但我认为问题出在 java 中(脚本甚至没有执行)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 2021-04-29
      • 1970-01-01
      相关资源
      最近更新 更多