在Java中向Python脚本传递参数

在Java中向Python脚本传递参数,java,python,jython,Java,Python,Jython,我在java类中运行python脚本,如下所示: PythonInterpreter interp = new PythonInterpreter(); PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]); interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py"); String[] a

我在java类中运行python脚本,如下所示:

PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");
String[] args = {"-i " + lawlinkerIfolder.toString() + " -o " + lawlinkerOfolder.toString()};
PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), args);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");
问题是script.py通常采用如下命令行参数:

PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");
String[] args = {"-i " + lawlinkerIfolder.toString() + " -o " + lawlinkerOfolder.toString()};
PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), args);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");
python script.py-ic:/diretory/path-oc:/directory/path

在Java中是否可以通过pythonInterpeter传递这些参数

更新:

Thx to Juned Ahsan我的代码现在如下所示:

PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");
String[] args = {"-i " + lawlinkerIfolder.toString() + " -o " + lawlinkerOfolder.toString()};
PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), args);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");
但是脚本仍然没有得到任何参数


我使用的是否正确?

下面调用中的最后一个参数用于命令行参数:

PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
发件人:

初始化

公共静态无效初始化(属性预属性, 属性后属性, 字符串[]argv)

初始化Jython运行时。这应该只调用一次, 在创建任何其他Python对象(包括PythonInterpreter)之前 创建。参数:预属性-一组属性。典型的 使用System.getProperties()。预属性覆盖来自的属性 注册表文件。后属性-另一组属性。价值观 类似于python.home、python.path和注册表中的所有其他值 可以将文件添加到此属性集中。后属性覆盖 系统属性和注册表属性。 argv-命令行参数,分配给sys.argv.


下面调用中的最后一个参数用于命令行参数:

PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
发件人:

初始化

公共静态无效初始化(属性预属性, 属性后属性, 字符串[]argv)

初始化Jython运行时。这应该只调用一次, 在创建任何其他Python对象(包括PythonInterpreter)之前 创建。参数:预属性-一组属性。典型的 使用System.getProperties()。预属性覆盖来自的属性 注册表文件。后属性-另一组属性。价值观 类似于python.home、python.path和注册表中的所有其他值 可以将文件添加到此属性集中。后属性覆盖 系统属性和注册表属性。 argv-命令行参数,分配给sys.argv.


我有同样的问题,发现可以通过使用“interned”字符串来解决,即

for (int i = 0; i args.length; ++i) {
    args[i] = args[i].intern();
}

我正在使用Jython2.5.3。希望这会有所帮助。

我也遇到了同样的问题,发现可以通过使用“interned”字符串来解决,即

for (int i = 0; i args.length; ++i) {
    args[i] = args[i].intern();
}

我正在使用Jython2.5.3。希望这会有所帮助。

谢谢你,这看起来很有希望。但是我不知道如何使用它。我现在有
String[]args={lawLinkerFolder.toString(),lawLinkerFolder.toString()};但是脚本仍然不能正常工作。初始化(System.getProperties(),System.getProperties(),args)谢谢你,看起来很有希望。但是我不知道如何使用它。我现在有
String[]args={lawLinkerFolder.toString(),lawLinkerFolder.toString()};但是脚本仍然不能正常工作。初始化(System.getProperties(),System.getProperties(),args)