Java调用python文件

Java调用python文件

本方法的运行环境为:jdk15.0
使用的编辑软件为:idea Ultimate和jupyter notebook
主要内容为:Java通过BufferedReader获取无参数的.py文件和Java通过BufferedReader获取含参数的.py文件

Java代码

import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
 * @author :
 * @date 2022/6/21 21:37
 * please don't copy
 **/
public class test {
    public static void main(String[] args) throws  Exception {
        Process process,process1;
//此处为不带参数的python代码调用
        String [] test1=new String[]{
                "D:\\softwareOfAI\\pythonPC\\pc\\python.exe" ,
                "D:\\softwareOfLife\\Browser\\Download\\s.py"
        };
        String line;
        process =  Runtime.getRuntime().exec(test1);
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
        while ((line=bufferedReader.readLine())!=null) {
            System.out.println(line);
        }
        bufferedReader.close();
        process.waitFor();
//此处为带参数的python代码调用
        String[] test2 = new String[]{
                "D:\\softwareOfAI\\pythonPC\\pc\\python.exe" ,
                "D:\\softwareOfLife\\Browser\\Download\\try.py",
                String.valueOf(2),
                String.valueOf(3)
        };

                process1 = Runtime.getRuntime().exec(test2);
                BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(process1.getInputStream(),"GBK") );
        String line1;
        while ((line1=bufferedReader1.readLine())!=null){
            System.out.println(line1);
        }
        bufferedReader1.close();
        process1.waitFor();
    }
}

python代码

不含参数的python代码:

print("你好欢迎使用Java嵌入Python语言片段");

含参数的python代码:

import sys
def add(a,b):
    a=int(a)
    b=int(b)
    return a+b
print(add(sys.argv[1],sys.argv[2]))

运行结果

在这里插入图片描述

注意事项

  1. 关于需要传递参数的python代码调用,在Java语言中,我们需要使用String[]数组来设置参数:String.valueof(值),来表示我们需要输入的参数。
    2.关于Java对python代码的调用的实质为:通过cmd运行python文件然后通过输入输出流来获取python文件的结果,通过bufferedReader的readline()方法来展示结果。
    3.String[]数组的参数分别为{python解释器位置, .py文件位置, url1(String.valueof(值)), url2(String.valueof(值))…}

BufferedReader.readline()无输出

(1).重命名.py文件;

(2).通过代码:

int result=process.waitFor();
System.out.println(result);

来检查是否python文件运行出错(如果输出结果为1则为pyhon文件运行出错);

(3).如果python文件需要Java传递参数,在.py文件中一定要给出输出:print(add(sys.argv[1],sys.argv[2]…)),Java控制台没有结果可能就是你没有给输出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值