文档章节

java中调用python脚本

Harry_sir
 Harry_sir
发布于 2017/09/01 11:22
字数 487
阅读 43
收藏 0
点赞 0
评论 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
粉丝 14
博文 80
码字总数 48004
作品 0
朝阳
其他
你真的了解Python吗?这篇文章让你了解90%

  【IT168 评论】人们为什么使用Python?   之所以选择Python的主要因素有以下几个方面:   软件质量:在很大程度上,Python更注重可读性、一致性和软件质量,从而与脚本语言世界中的其...

博客园 ⋅ 05/21 ⋅ 0

Java调用Keras、Tensorflow模型

实现python离线训练模型,Java在线预测部署。查看原文 目前深度学习主流使用python训练自己的模型,有非常多的框架提供了能快速搭建神经网络的功能,其中Keras提供了high-level的语法,底层可...

ioiogoo ⋅ 04/03 ⋅ 0

各种 Python 实现的简单介绍与比较

(点击上方公众号,可快速关注) 编译:Daetalus http://python.jobbole.com/82703/ 当谈到Python时,一般指的是CPython。但Python实际上是一门语言规范,只是定义了Python这门语言应该具备哪...

Python开发者 ⋅ 04/25 ⋅ 0

为什么Python成了开发AI的主流语言?Java系列、Ruby等编程语言不行吗?

导读 说道开发AI的语言,很多人说,不是Python吗?没错,Python是可以开发AI,但是不知道你们有没有想过,真的就只有Python才可以开发AI吗? 其实,像Java、Ruby也是开发AI很好的选择,但是为...

柯西带你学编程 ⋅ 05/29 ⋅ 0

Python—duck type鸭子类型

在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。这个概念...

qq_39521554 ⋅ 04/20 ⋅ 0

Python是如何怼翻其他编程语言而窜上宝座的

来PK啊! 谁怕谁啊! 在过去的两年间,Python一路高歌猛进,成功窜上“最火编程语言”的宝座。 更可怕的是,这把火不仅仅是在程序员的圈子里越烧越旺,甚至还烧到了程序员的圈子外,从小学生...

超级数学建模 ⋅ 04/18 ⋅ 0

Python才是人工智能AI的首选编程语言,你值得拥有……

在所有编程语言里,Python并不算萌新,从1991年发布第一个版本,至今已经快30年了。 最近几年,随着人工智能概念的火爆,Python迅速升温,成为众多AI从业者的首选语言。 根据数据平台 Kaggle...

M耀文 ⋅ 05/19 ⋅ 0

Python和Java的硬盘夜话

点击上方“程序员小灰”,选择“置顶公众号” 有趣有内涵的文章第一时间送达! 本文转载自公众号 码农翻身 这是一个程序员的电脑硬盘,在一个叫做“学习”的目录下曾经生活着两个小程序,一个...

bjweimengshu ⋅ 05/16 ⋅ 0

python中jpype回调某个jar包中函数返回值类型为其子类,如何获取其父类

如图所示,我在python里面使用jpype回调java第三方包里面的某个函数,返回类型一直为DBApiLayer这个对象类型,但是我在python里面需要获取到的是DB这个对象类型,我看了下我回调方法返回类型...

一眼000 ⋅ 05/02 ⋅ 0

为什么python突然变得这么火了?

可能会有一种感觉python突然之间变得这么火热了,个人感觉还是雷声大雨点小,真正用pytho落地的东西还是少,不可否认的python前途无量,现在人工智能的调用框架选择了python。所以目前阶段选...

Python燕大侠 ⋅ 05/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IDEA PermGen space内存溢出

解决方案: File -> Settings -> Build, Execution, Deployment / Build Tools / Maven / Runner下,找到VM Options选项,默认是空的,改为如下内容(或更大值)...

快乐的小火柴 ⋅ 17分钟前 ⋅ 0

前端常见跨域解决方案

什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 1.) 资源跳转: A链接、重定向、表单提交2.) 资源嵌入: <link>、<script>、<im...

临江仙卜算子 ⋅ 17分钟前 ⋅ 0

系统管理命令service

service命令用来控制系统服务的实用工具,例如启动、停止、重启和关闭系统服务,以及当前状态。当然也可以直接操作,例如/etc/init.d/mysqld restart等。 语法 service (选项)(参数) 选项...

Jpchina ⋅ 22分钟前 ⋅ 0

MySQL 联合索引的命中规则

为什么要用联合索引? 对于查询语句“SELECT T.* FROM T WHERE T.c1=1 AND T.c3=2”涉及到两列,这个时候我们一般采用一个联合索引(c1, c3);而不用两个单列索引,这是因为一条查询语句往往应...

hensemlee ⋅ 30分钟前 ⋅ 0

Spring 自动组件扫描

通常情况下都是在XML配置文件中手动声明Bean和组件的。不过Spring也可以自动扫描组件实例化Bean,这样就可以避免在XML文件中繁琐的Bean声明。 手动声明Bean: 这里不再啰嗦,就是简单地在XML...

霍淇滨 ⋅ 35分钟前 ⋅ 0

MapReduce简单需求分析-共同好友及查找互粉的情况

MapReduce的设计,最重要的是要找准key,然后制定一系列的数据处理流程。MapReduce的Map中,会把key相同的分配到同一个reduce中,对于key的选择,可以找到某个相同的因素。以下面的几个例子说...

Jason_typ ⋅ 37分钟前 ⋅ 0

springboot多数据源自动切换

SpringBoot多数据源切换,先上配置文件: 1.pom: <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20......

JackyRiver ⋅ 39分钟前 ⋅ 0

Boost库编译应用

版本:Boost 1.66.0 Windows库编译 官网指南:直接执行bootstrap.bat处理文件即可,可以我却遇到一堆的问题。 环境:Windows 10 + Visual Studio 2017 Boost编译出来库命名 boost库生成文件命...

水海云 ⋅ 43分钟前 ⋅ 0

解决Eclipse发布到Tomcat丢失依赖jar包的问题

如果jar文件是以外部依赖的形式导入的。Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的。 可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加“Java Build ...

ArlenXu ⋅ 43分钟前 ⋅ 0

iview tree组件层级过多时可左右滚动

使用vue+iview的tree组件,iview官网iview的tree树形控件 问题描述:tree层级过多时左右不可滚动 问题解决:修改overflow属性值 .el-tree-node>.el-tree-node_children { overflow: vi...

YXMBetter ⋅ 45分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部