java中调用python脚本
2017-09-01 00:00
465 查看
摘要: 三种方式中,当python脚本调用第三方函数库的时候,前两种方式不可用。原因是,不能完整调用第三方Model
在java中调用python脚本有三种方式
【方式一】:
直接执行Python脚本代码 引用 org.python包
【方式二】:
执行python .py文件
【方式三】:
对于前两种方式可能存在以下问题:
当python调用第三方函数库的时候,不能调用。但是通过第三种方式可以解决。
直接上代码:
1.java代码部分
public static void Test1() throws Exception {
//TODO:执行python脚本
System.out.println("start python");
//需传入的参数
String a = "aaa", b = "bbb", c = "ccc", d = "中国";
// System.out.println("start;;;" + a);
//设置命令行传入参数
String[] argv = new String[] { "python", "data/pythonScrip/test1.py", a, b, c, d };
Process pr = Runtime.getRuntime().exec(argv);
System.err.println("pr:"+pr);
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream(),"GBK"));
System.err.println("in:"+in);
String line;
// System.err.println(in.lines().count());
while ((line = in.readLine()) != null) {
System.out.println("line:"+line);
}
in.close();
pr.waitFor();
System.out.println("end");
}
2.python代码部分(test1.py)
import sys
print("======")
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
print(sys.argv[3])
print(sys.argv[4])
3.输出结果
调用第三方函数库案例
1.java代码部分
public static void Test1() throws Exception {
//TODO:执行python脚本
System.out.println("start python");
//需传入的参数
String a = "F:/6-日志/20170822_主题相关进阶/Demo/w2v_java_call/bd/w2v_bd.model", b = "一带一路";
// System.out.println("start;;;" + a);
//设置命令行传入参数
String[] argv = new String[] { "python", "data/pythonScrip/w2v_java.py", a, b};
Process pr = Runtime.getRuntime().exec(argv);
System.err.println("pr:"+pr);
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream(),"GBK"));
System.err.println("in:"+in);
String line;
// System.err.println(in.lines().count());
while ((line = in.readLine()) != null) {
System.out.println("line:"+line);
}
in.close();
pr.waitFor();
System.out.println("end");
}
2.Python代码部分
from gensim.models import word2vec #调用第三方函数库
import sys
# def get_vector(word,model):
print (sys.argv[0]) #读取动态参数,作为python脚本的输入
print (sys.argv[1])
print (sys.argv[2])
model = word2vec.Word2Vec.load(sys.argv[1])
vector=model[sys.argv[2]]
print(vector)
输出结果
在java中调用python脚本有三种方式
【方式一】:
直接执行Python脚本代码 引用 org.python包
1 PythonInterpreter interpreter = new PythonInterpreter(); 2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); ///执行python脚本
【方式二】:
执行python .py文件
1 PythonInterpreter interpreter = new PythonInterpreter(); 2 InputStream filepy = new FileInputStream("D:\\demo.py"); 3 interpreter.execfile(filepy); ///执行python py文件 4 filepy.close();
【方式三】:
对于前两种方式可能存在以下问题:
当python调用第三方函数库的时候,不能调用。但是通过第三种方式可以解决。
直接上代码:
1.java代码部分
public static void Test1() throws Exception {
//TODO:执行python脚本
System.out.println("start python");
//需传入的参数
String a = "aaa", b = "bbb", c = "ccc", d = "中国";
// System.out.println("start;;;" + a);
//设置命令行传入参数
String[] argv = new String[] { "python", "data/pythonScrip/test1.py", a, b, c, d };
Process pr = Runtime.getRuntime().exec(argv);
System.err.println("pr:"+pr);
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream(),"GBK"));
System.err.println("in:"+in);
String line;
// System.err.println(in.lines().count());
while ((line = in.readLine()) != null) {
System.out.println("line:"+line);
}
in.close();
pr.waitFor();
System.out.println("end");
}
2.python代码部分(test1.py)
import sys
print("======")
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
print(sys.argv[3])
print(sys.argv[4])
3.输出结果
调用第三方函数库案例
1.java代码部分
public static void Test1() throws Exception {
//TODO:执行python脚本
System.out.println("start python");
//需传入的参数
String a = "F:/6-日志/20170822_主题相关进阶/Demo/w2v_java_call/bd/w2v_bd.model", b = "一带一路";
// System.out.println("start;;;" + a);
//设置命令行传入参数
String[] argv = new String[] { "python", "data/pythonScrip/w2v_java.py", a, b};
Process pr = Runtime.getRuntime().exec(argv);
System.err.println("pr:"+pr);
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream(),"GBK"));
System.err.println("in:"+in);
String line;
// System.err.println(in.lines().count());
while ((line = in.readLine()) != null) {
System.out.println("line:"+line);
}
in.close();
pr.waitFor();
System.out.println("end");
}
2.Python代码部分
from gensim.models import word2vec #调用第三方函数库
import sys
# def get_vector(word,model):
print (sys.argv[0]) #读取动态参数,作为python脚本的输入
print (sys.argv[1])
print (sys.argv[2])
model = word2vec.Word2Vec.load(sys.argv[1])
vector=model[sys.argv[2]]
print(vector)
输出结果
相关文章推荐
- Java调用Python脚本
- java直接调用python脚本的例子
- Java调用Python脚本
- java直接调用python脚本的例子
- 在Java中动态传参调用Python脚本
- 在java中调用python脚本
- Java调用Python脚本
- Java调用Python脚本并获取返回值
- java 利用Runtime.getRuntime().exec()调用python脚本并传参
- java调用python脚本传参
- java动态传参调用python脚本
- java调用python脚本之tomcat中
- java 直接调用python脚本,并传递参数
- Java调用Python脚本工具类
- 使用Runtime.getRuntime().exec()在java中调用python脚本
- java 利用Runtime.getRuntime().exec()调用python脚本并传参
- Java调用Python脚本
- java调用python脚本文件大盘点
- Java调用Python脚本
- Java程序中调用Python脚本的方法