我正在这样的java类中运行python脚本:
PythonInterpreter interp = new PythonInterpreter();
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
interp.execfile("C:\\Users\\user1\\workspace\\Projectx\\script.py");
问题是script.py通常采用如下命令行参数:
python script.py -i C:/ diretory / path -o C:/ directory / path
是否可以通过Java中的PythonIntepereter传递这些参数?
更新
向Juned Ahsan致谢我的代码现在看起来像这样:
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");
但剧本仍然没有得到任何论据。
我是否正确使用了这个?
答案 0 :(得分:1)
以下调用中的最后一个参数用于命令行参数:
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
来自PythronInterpreter javadocs:
<强>初始化强>
public static void initialize(Properties preProperties, 属性postProperties, String [] argv)
初始化Jython运行时。这应该只调用一次, 在任何其他Python对象(包括PythonInterpreter)之前 创建。参数:preProperties - 一组属性。通常 使用System.getProperties()。 preProperties覆盖来自的属性 注册表文件。 postProperties - 另一组属性。值 像python.home,python.path和注册表中的所有其他值 文件可以添加到此属性集。 postProperties覆盖 系统属性和注册表属性。 argv - 分配给sys.argv的命令行参数。
答案 1 :(得分:0)
我有同样的问题,发现可以通过使用&#34; interned&#34;字符串,即
for (int i = 0; i args.length; ++i) {
args[i] = args[i].intern();
}
我正在使用Jython 2.5.3。希望这会有所帮助。