关于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卡死了,所以重启了电脑


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/39271.html