0
点赞
收藏
分享

微信扫一扫

Java调用python的程序

dsysama 2022-01-08 阅读 63

3种方式:

第一种不介绍了,直接参考我的博客,flask和django框架搭建。

第二种方式:

 1、可以直接命令安装:pip install pyinstaller

也可以使用pychar安装pyinstaller插件。

 2、生成可执行文件:

 生成了可执行文件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。

举报

相关推荐

0 条评论