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

Mic*_*ael 0 python java jython

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

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("C:/path/to/file/__main__.py");
Run Code Online (Sandbox Code Playgroud)

谢谢你!

Jor*_*nee 7

execfile在本地命名空间中执行脚本。sys.argv您可以简单地在之前的调用中将值分配给exec

PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec(
    "import sys\n"
    +"sys.argv = ['Foo', 'Bar']");
interpreter.execfile("J:/test.py");
Run Code Online (Sandbox Code Playgroud)

脚本在哪里:

import sys

print(sys.argv)
Run Code Online (Sandbox Code Playgroud)

印刷:

['Foo', 'Bar']
Run Code Online (Sandbox Code Playgroud)

我研究了您的评论问题,看起来您需要设置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");
Run Code Online (Sandbox Code Playgroud)