Java调用python的程序
3种方式:
1、利用flask或者django的web向外提供接口调用(可参考django和flask的程序)
2、利用PyInstaller把python生成一个exe的可执行文件调用
3、比较麻烦,安装python,直接调用.py文件
第一种不介绍了,直接参考我的博客,flask和django框架搭建。
第二种方式:
1、可以直接命令安装:pip install pyinstaller
也可以使用pychar安装pyinstaller插件。
2、生成可执行文件:
pyinstaller -F -w hello.pyhello.py是我的项目启动文件名称,生成的可执行文件放在同目录dist下
-F(注意大写)是所有库文件打包成一个可执行文件,windows下是exe,Linux下是对应的可执行文件;
-w是禁止弹出黑色控制台窗口。
项目调用了图片等本地资源,请将可执行文件放在对应目录才能运行。
生成了可执行文件hello.exe
3、Java调用hello.exe文件(使用ProcessBuilder(参考我的博客))
程序演示:
package com.test.demo.gua;import java.io.BufferedReader;
import java.io.InputStreamReader;/*** cmd /c dir 是执行完dir命令后关闭命令窗口。cmd /k dir 是执行完dir命令后不关闭命令窗口。cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。*/
public class TestPython {public static void main(String[] args) {//.exe程序所在的完整路径String arguments = "H:\\WorkPlace\\JavaPlace\\demo\\demo\\file\\hello.exe";ProcessBuilder processBuilder = new ProcessBuilder(arguments);StringBuilder stringBuilder = new StringBuilder();processBuilder.redirectErrorStream(true);Process process =null;try {// 获取程序执行后返回的结果//执行这个.exe程序process = processBuilder.start();
// process = Runtime.getRuntime().exec("cmd /c start " + arguments);BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));String line = null;while ((line = in.readLine()) != null) {
// System.out.println(line);stringBuilder.append(line + System.lineSeparator());}in.close();//java代码中的process.waitFor()返回值为0表示我们执行.exe文件成功,//返回值为1表示执行.exe文件失败,这和我们通常意义上见到的0与1定义正好相反int re = process.waitFor();System.out.println(re);System.out.println(stringBuilder.toString().trim()+"-------------");} catch (Exception e) {e.printStackTrace();}finally{if (process != null) {process.destroy();}}}}
成功输出:欢迎大家光临!!!
第三种就是安装python3,具体安装过程不展示
直接上代码:
// 依次为:python.exe的安装路径,hello.py脚本的存储路径
String[] arguments = new String[] {"D:\\Python\\python.exe", "H:\\WorkPlace\\JavaPlace\\demo\\demo\\file\\hello.py"};try {// 运行hello.pyProcess process = Runtime.getRuntime().exec(arguments);BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));String line = null;while ((line = in.readLine()) != null) {System.out.println(line);}in.close();//java代码中的process.waitFor()返回值为0表示我们调用python脚本成功,//返回值为1表示调用python脚本失败,这和我们通常意义上见到的0与1定义正好相反int re = process.waitFor();System.out.println(re);} catch (Exception e) {e.printStackTrace();}
这是用runtime的exec();也可以使用ProcessBuilder。
Java调用python的程序相关推荐
- Java调用python脚本
Java调用python脚本 最近也是刚开始学python,所以这里写了一个简单的小方法用Java来调用python脚本.后期再进行更新. 1.Java启动程序的方法 在Java中提供了两种方法来启动 ...
- 【Java】使用Java调用Python的四种方法
写在前面 为啥一个好好的岗位是Java开发工程师要去做写python呢?因为产品经理安排的(突然多少有点明白为啥程序员和产品经理会一直开撕).由于在选择企业的时候没看清企业性质,看了要求以为就是互联网 ...
- java 调用python脚本过程_通过Java调用Python脚本
在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...
- .net core 引用jar_Python一键转Jar包,Java调用Python新姿势!
粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 今天的这篇文章,聊一个轩辕君之前工作中遇到的需求:如何在Jav ...
- Java 调用 Python 方法学习笔记
文章转载自: 作者:IT_xiao_bai 来源:CSDN 原文:https://blog.csdn.n ...
- windows文本转语音 通过java 调用python 生成exe可执行文件一条龙
我已记不清 我失败过多少次 ,找过多少资料 ,但是功夫不负有心人 ,还是成功了. 所有资料和需要的语音模块的资料以放置在文章末尾, 有些是引用别人的博客的部分内容, 原文是在有道云笔记,所以没有图 . ...
- python文件转换成jar包_Python一键转Jar包,Java调用Python新姿势!
粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 今天的这篇文章,聊一个轩辕君之前工作中遇到的需求:如何在Jav ...
- Java调用Python语言及第三方Python库
#pic_center =400x 系列文章: 文章目录 1.导入依赖 <!--Python&Java--><dependency><groupId>org ...
- java调用python 踩的坑
因为工作需要 现在要用java去调用python程序的方法 java 调用python的方法有很多 这里主要讲一下最常用的一种,Runtime.getRuntime().exec ("pyt ...
最新文章
- SAP中供应商确认功能的应用分析
- 【资料下载区】【iCore、 iCore2相关资料】更新日期2017/1/11
- linux C如何获取服务器节点上所有网口的ip地址
- linux du -sh 脚本,Linux之shell脚本(2)
- 类HTML语法显示格式化文本
- Ajax开发框架(下)[整理]
- 交互设计中的“所见即所得”原则
- springcloud之eureka集群搭建
- 工作流:如何将Word尾注转换为普通文本格式
- 睿智的目标检测27——Pytorch搭建Faster R-CNN目标检测平台
- 开关配置springboot定时任务
- 计算机外存断电会丢失吗,外储存器断电后信息会丢失吗
- 金融科技数据中台基于 DolphinScheduler 的应用改造
- queryWrapper详解
- 地理信息系统-坐标系统
- GSM Arena 魅族mx四核评测-个人翻译
- go Jenkins流水线极速打包镜像上传
- Java项目:SSH小区/公司/物业停车场管理系统
- python传参是什么意思_Python传参传什么?
- c读取ini配置文件_细数Java项目中用过的配置文件(ini 篇)
热门文章
- 模拟赛 10-14考试再次翻车记
- jmap查看内存使用情况与生成heapdump
- UWP ListView 绑定 单击 选中项 颜色
- 可输入可选择的input
- calling c++ from golang with swig--windows dll(一)
- Android开发问题集锦-Button初始为disable状态时自定义的selector不生效问题
- 【二分】【中等难度】noip模拟赛 聪哥的工资
- boot sprint 项目结构_完美起航-【知识】SpringBoot项目结构目录
- html显示当前时间_HTML基础教程:超链接的使用
- for循环递减_C++ 循环:方阵队列,内外层叠