有没有办法使用 PythonInterpreter return python 代码的输出值 "print('python code')" 到字符串或其他对象中

Is there a way to return the value of the output of python code like "print('python code')" into a String or other object using PythonInterpreter

我正在尝试使用 java 制作一个简单的 python 解释器。基本上,您编写了一些 python 代码,例如 print('hello world') 并且请求被发送到 spring 引导后端应用程序,该应用程序使用 PythonInterpreter[=31 解释代码=] 库和 returns 以 JSON 对象形式的结果,如:

{
  "result": "hello world"
}

我尝试了以下在控制台上显示打印结果的代码,但我无法将 return 分配给构建 JSON 响应所需的变量。

PythonInterpreter interp = new PythonInterpreter();
interp.exec("print('hello world')");

在控制台上打印 hello world

我想要这样的东西:

PythonInterpreter interp = new PythonInterpreter();
interp.exec("x = 2+2");
PyObject x = interp.get("x");
System.out.println("x: "+x);

这打印 x: 4 我想对打印做同样的事情,但我仍然没有找到解决方案。

如果有人知道如何执行此操作,将非常感谢您的帮助。

如果你阅读文档,即 PythonInterpreter 的 javadoc,你会发现以下方法:

所以你会这样做:

StringWriter out = new StringWriter();
PythonInterpreter interp = new PythonInterpreter();
interp.setOut(out);
interp.setErr(out);
interp.exec("print('hello world')");
String result = out.toString();
System.out.println("result: " + result);