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

时间:2017-03-03 21:51:26

标签: java python jython

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

时将值分配给exec
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']

我查看了您的评论问题,看起来您需要在python.path对象中设置Properties,然后将其传递给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");