将 Jython PythonInterpreter 中的参数添加到 "execfile" 函数

Adding arguments in Jython PythonInterpreter to the "execfile" function

我有一个 python 脚本,我想在 Java 中使用 Jython 执行它。 Python 脚本接受 2 个参数。如何向脚本添加参数?

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("C:/path/to/file/__main__.py");

谢谢!

execfile 在本地命名空间中执行脚本。您可以在之前调用 exec:

时简单地将值分配给 sys.argv
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec(
    "import sys\n"
    +"sys.argv = ['Foo', 'Bar']");
interpreter.execfile("J:/test.py");

脚本所在位置:

import sys

print(sys.argv)

打印:

['Foo', 'Bar']

我调查了您的评论问题,您似乎需要在 Properties 对象中设置 python.path,然后将其传递给 PythonInterpreter.initialize。您也可以使用它来传递参数:

Properties p = new Properties();
p.setProperty("python.path", "J:/WS/jython"); // Sets the module path

PythonInterpreter.initialize(System.getProperties(), p, new String[]{ "Foo", "Bar" });

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("J:/WS/jython/main.py");