我已经找到了一些有关如何做到这一点的技巧,但是将它们结合在一起是行不通的,所以我寻求帮助。
我在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]等),但没有任何效果。
在此先感谢您的帮助。
答案 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中(脚本甚至没有执行)。