python 作为一种较为简洁的语言,虽然其也具有面对对象的特性,但,身边用这方面的小伙伴真的不咋多,不说新星 Go了,Java它都追不上,毕竟开发环境和生态决定了很多东西。But,python庞大的库资源,以及简洁的语言风格还是深受很多人的喜爱,再者赶上了AI的好时代,感觉大家都在学。But,做应用开发时偶尔还是需要使用python来做些东西,所以Java
怎么调用Python呢?
直接上代码,边看别边,相信看完你就会这套流程了,真不懂可以留言,但我更希望是大佬你的指导!
以windows平台为例:(我用的windows Server,不敢说Linux 完全行)
翻出以前代码直接改的,有些变量命名可读性不适合这里,请不要介意!
1、确定本机安装python环境
我相信你有!
2、Java调用Python并传递参数
// =========================== 抽象类 包含调用Python以及获取返回值的方法!==================
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public abstract class JavaToPy {
public static void getFile(String filename) throws IOException, InterruptedException {
String param =filename;
String[] command = new String[] {"python","D:/test.py",param};
final Process process = Runtime.getRuntime().exec(command);
printMessage(process.getInputStream());
printMessage(process.getErrorStream());
}
private static void printMessage(final InputStream input) {
new Thread(new Runnable() {
public void run() {
Reader reader = new InputStreamReader(input);
BufferedReader bf = new BufferedReader(reader);
String line = null;
try {
while((line=bf.readLine())!=null) {
System.out.println(line); // 返回值
}
reader.close();
bf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
// =============================== 主函数 调用上面抽象类的方法===========================
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException, InterruptedException {
JavaToPy.getFile("Hello Java! I am Python"); // 我给 python传递的参数!
}
}
3、python 接收返回值
我们来看看python文件的内容
import sys
# 注意啦!
#第一种
#dataforJava1 = sys.argv[0:1] # 获取到的Java传递的内容: Python文件绝对地址 + 参数
#print("Java,I am Python "+"your passage is : "+str(dataforJava1))
#第二种
dataforJava2 = sys.argv[1:] # 获取到的python的参数
print("Java,I am Python "+"your passage is : "+str(dataforJava2))
4、我们看看Java获取的返回值
// dataforJava1 第一种
Java,I am Python your passage is : ['D:/test.py', 'Hello Java! I am Python']
// dataforJava2 第二种
Java,I am Python your passage is : ['Hello Java! I am Python']
5、用处
传递你想传递的一切,有时间我再测试Linux下的使用!