Springboot 中执行 python 程序
-
引入 python 依赖。Jython是一个Python的Java实现,它允许你在Java中直接运行Python代码。
<dependency> <groupId>org.python</groupId> <artifactId>jython-standalone</artifactId> <version>2.7.0</version> </dependency> -
springboot 中执行 python 程序的代码如下:
private String runPython(String param){ // python程序的绝对路径,在windows中用"\\"分隔,在Linux中用"/"分隔 String pyPath = "python程序的绝对路径"; // 传入python程序的参数为 param String[] args = new String[]{"python 环境中 python.exe 的绝对路径", pyPath, param}; try { // 执行Python文件,并传入参数 Process process = Runtime.getRuntime().exec(args); // 获取Python输出字符串作为输入流被Java读取,"gb2312" 用来读取中文。 BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(), "gb2312")); String actionStr = in.readLine(); in.close(); process.waitFor(); return actionStr; } catch (IOException e) { throw new RuntimeException(e); } catch (InterruptedException e) { throw new RuntimeException(e); } }我们使用Java提供的
Runtime.getRuntime().exec(args)方法来执行 python 程序。对于args参数,其是一个字符串数组。字符串的第一个元素是python.exe文件的绝对路径(例E:\\Miniconda\\envs\\recommend\\python.exe),第二个元素是要运行的 python 程序的绝对路径,后面的元素就是我们要传给 python 程序的参数。整个程序返回的内容是 python 程序返回的内容。
-
python 程序的一些要求
-
python 程序中所有的参数使用
sys.argv[i]来代替,sys.argv[1]就是传入的第一个参数(以上面的程序为例,其就是param) -
整个 python 程序只能有一个
print,通过print将程序的输出传递给 java。 -
python 程序中的所有路径最好使用绝对路径,在windows中用
\\分隔,在Linux中用/分隔。 -
示例程序
import sys param = sys.argv[1] print(param)
-
680

被折叠的 条评论
为什么被折叠?



