2016-05-04 90 views
2

参数Python脚本,我想打电话给使用的ScriptEngine的java python脚本,但我不知道如何添加参数呼叫与从Java

从命令行是一样的东西:python test.py language 10 "some text" 地方语言,10, “一些文本”是用户给出的参数。

下面是一段代码,我想修改(请参阅本answer

StringWriter writer = new StringWriter(); //ouput will be stored here 

ScriptEngineManager manager = new ScriptEngineManager(); 
ScriptContext context = new SimpleScriptContext(); 

context.setWriter(writer); //configures output redirection 
ScriptEngine engine = manager.getEngineByName("python"); 
engine.eval(new FileReader("test.py"), context); 
System.out.println(writer.toString()); 
+0

你也可以通过'Process p = Runtime.getRuntime()。exec(“python test.py language 10 \”some text \“”);''来实现,如http://stackoverflow.com/questions/17756721 /调用-python-from-java-tomcat6-as-sub-process –

+0

感谢您的评论。是的,我知道,但我不知道是否可以使用脚本引擎完成。 – Daisy

回答

0

通过通过documentation去,似乎这可以通过使用put()来实现:

// rest of your code 
ScriptEngine engine = manager.getEngineByName("python"); 
engine.put(ScriptEngine.ARGV, array_of_strings); 
engine.eval(new FileReader("test.py"), context); 
// rest of your code 

其中array_of_strings是一个用作参数的字符串数组。

+0

感谢您的回答,我尝试过,但它会抛出NullPointerException – Daisy

+0

@Daisy哪个变量为空? – DeepSpace

+0

它反驳了这一行:engine.put(ScriptEngine.ARGV,array_of_strings); – Daisy