文档章节

java中调用python脚本

Harry_sir
 Harry_sir
发布于 2017/09/01 11:22
字数 487
阅读 52
收藏 0

在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)

输出结果

 

 

 

© 著作权归作者所有

共有 人打赏支持
Harry_sir
粉丝 15
博文 80
码字总数 48004
作品 0
朝阳
其他
私信 提问
Java调用python脚本,脚本日志如何输入到日志文件中?如何实时获取脚本日志?

Java调用python脚本遇到的两个问题,求教: 1、Java调用python脚本,python脚本不会输出日志到日志文件;但是单独运行python脚本会输出日志文件,为什么?怎么解决? 2、Java调用python脚本,...

许雪里
2017/02/25
192
1
(转载)Python 的 JPype 模块调用 Jar 包

Python 的 JPype 模块调用 Jar 包 import os.path startJVM("F:/Java/jdk1.8.0_45/jre/bin/server/jvm.dll", "-ea") java.lang.System.out.println("hello World") shutdownJVM() import jp......

江诗
03/21
0
0
Python学习记录-----批量发送post请求

昨天学了一天的Python(我的生产语言是java,也可以写一些shell脚本,算有一点点基础),今天有一个应用场景,就正好练手了。 这个功能之前再java里写过,比较粗糙,原来是在我本机跑的,今天...

左眼神威
2017/05/11
0
0
[转] 五大基于JVM的脚本语言

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 能运行在Java的虚拟机J...

小编辑
2011/07/06
2.4K
4
Eclipse中java代码调用python脚本时提示错误Exception in thread "main" Traceback (most recent call last):,请问如何解决?

我Eclipse配置了python和jython了,Eclipse中java代码调用python脚本时提示错误Exception in thread "main" Traceback (most recent call last): java代码如下: 原有python脚本代码如下: 运...

非著名魔兽解说
2017/03/02
1K
8

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
2
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
4
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部