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]))
运行结果
注意事项
- 关于需要传递参数的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控制台没有结果可能就是你没有给输出。