关于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卡死了,所以重启了电脑
今天的文章python调用第三方软件_python代码打开某个软件分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/84230.html