Springboot 中执行 python 程序

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Springboot 中执行 python 程序
  1. 引入 python 依赖。Jython是一个Python的Java实现,它允许你在Java中直接运行Python代码。

    <dependency>
        <groupId>org.python</groupId>
        <artifactId>jython-standalone</artifactId>
        <version>2.7.0</version>
    </dependency>
    
  2. 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 程序返回的内容。

  3. python 程序的一些要求

    1. python 程序中所有的参数使用 sys.argv[i] 来代替,sys.argv[1]就是传入的第一个参数(以上面的程序为例,其就是 param

    2. 整个 python 程序只能有一个 print,通过 print将程序的输出传递给 java。

    3. python 程序中的所有路径最好使用绝对路径,在windows中用\\分隔,在Linux中用/分隔。

    4. 示例程序

      import sys
      param = sys.argv[1]
      print(param)
      

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值