关于JAVA中调用python脚本的两种方式,9009的返回信息的处理

关于JAVA中调用python脚本的两种方式

注意 (一)

两种方式本质上都是调用cmd执行脚本,不同的是第一个是获取的脚本执行的print的结果,第二种方式是直接获取cmd面板上脚本执行后的所有东西,正常情况下没有区别,但是异常情况下,嘿嘿嘿。
推荐使用第一种方式

注意(二)

  • 即便仅仅是调用py脚本,也是需要python的环境,推荐去官网下载环境,并配置好环境。配好环境后用cmd先运行下脚本,如果成功的话,再去写调用步骤,不成功的话,原因可能是环境没配好,或者是第三方库没有下载(python的import的东西)
  • process.waitFor()返回9009的解决方式在下方,方法写好了返回结果是空或者null的解决方案也在下方。

方法

第一种方式:只给了方法体,方法名木得

String result = "";

        try {
        	// 获取进程
            Process process = Runtime.getRuntime().exec("python " + 脚本地址 + " " + 入参);
            // 用流来接收获取结果,这里的字符集可以指定也可以不指定,视情况而定
            InputStreamReader ir = new InputStreamReader(process.getInputStream(), "GBK");
            // 这个我给注释掉了,可以看看这个的返回值,如果出现9009的话,处理方法会放在文章末尾
            // process.waitFor(); 
            LineNumberReader input = new LineNumberReader(ir);
            result = input.readLine();
            input.close();
            ir.close();
            // 把输入的结果转换成json格式返回,RuleMatchVO.class是我自定义的类
            return JSONObject.parseObject(result, RuleMatchVO.class);;
        } catch (Exception e) {
            log.error("调用python脚本并读取结果时出错:" + e.getMessage());
            e.printStackTrace();
        }

第二种方式:只给方法体,方法名木得

String str = null;
        str = RuntimeUtil.execForStr("python " + pythonScriptAddress + " " + key);
        // 把输入的结果转换成json格式返回,RuleMatchVO.class是我自定义的类
        return JSONObject.parseObject(str, RuleMatchVO.class);

9009解决方案

这是w10系统的惊喜= =

  • 管理员启动cmd

  • 输入命令 where python

  • del 系统自带的那个(要切换目录到目标文件路径下删,下图这个是系统自带的,用cmd面板删,直接去的话可能删除不了)在这里插入图片描述

  • 输入命令 where python3

  • del 系统自带的那个(一般而言,python和python3是在同一个目录下)
    在这里插入图片描述

  • 重启idea或者重启了电脑都可。

  • 我重启idea卡死了,所以重启了电脑

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值