从Java运行带有参数的exe python脚本

时间:2019-01-09 13:41:54

标签: java python arguments exe

我已经找到了一些有关如何做到这一点的技巧,但是将它们结合在一起是行不通的,所以我寻求帮助。

我在python中有一个脚本,该脚本从parameters(arguments?)(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]等),但没有任何效果。

在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

所提到的任何事情都没有起作用,我决定通过txt文件(在Java中写入txt并在python中读取它)进行操作。

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

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