在我的Java应用程序中,我想使用Jython来解释Python代码 所以我按如下方式初始化Jython:
PySystemState.initialize();
PythonInterpreter jython = new PythonInterpreter();
然后我想像这样测试它:
jython.eval("out = ''");
jython.eval("out += 'Test1\n'");
jython.eval("out += 'Test2\n'");
System.out.println(jython.get("out").toString());
但是,第一个eval行会抛出此错误:
File "<string>", line 1
out = ''
^
SyntaxError: mismatched input '=' expecting EOF
当我使用 exec 而不是 eval 进行尝试时,我收到此错误:
File "<string>", line 2
'
^
SyntaxError: no viable alternative at character '''
我在这里做错了什么想法?
PS:我正在使用jython-2.5.4-rc1
答案 0 :(得分:2)
您需要确保拥有以下内容
out
变量\\n
exec
而不是eval
这将产生:
PythonInterpreter jython = new PythonInterpreter();
jython.set("out", new PyString());
jython.exec("out = ''");
jython.exec("out += 'Test1\\n'");
jython.exec("out += 'Test2\\n'");
System.out.println(jython.get("out").toString());
答案 1 :(得分:0)
您应该使用 exec 来执行语句。 eval 评估并返回 PyObject 。