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.py

  hello.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.py
			Process 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。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值