在Java中向Python脚本传递参数
我在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
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)代码>