详解java调用python的几种用法(看这篇就够了)


Posted in Python onDecember 10, 2020

java调用python的几种用法如下:

  • 在java类中直接执行python语句
  • 在java类中直接调用本地python脚本
  • 使用Runtime.getRuntime()执行python脚本文件(推荐)
  • 调用python脚本中的函数

准备工作:

创建maven工程,结构如下:

详解java调用python的几种用法(看这篇就够了)

到官网https://www.jython.org/download.html下载Jython的jar包或者在maven的pom.xml文件中加入如下代码:

<dependency>
  <groupId>org.python</groupId>
  <artifactId>jython-standalone</artifactId>
  <version>2.7.0</version>
</dependency>

1.在java类中直接执行python语句

创建JavaRunPython.java类:

package com.test;

import org.python.util.PythonInterpreter;

public class JavaRunPython {
  
  public static void main(String[] args) {
    PythonInterpreter interpreter = new PythonInterpreter();
    interpreter.exec("a='hello world'; ");
    interpreter.exec("print a;");
  }

}

输出结果如下:

详解java调用python的几种用法(看这篇就够了)

出现的console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0.并不是错误,而是兼容所导致,解决方法如下:

详解java调用python的几种用法(看这篇就够了)

详解java调用python的几种用法(看这篇就够了)

详解java调用python的几种用法(看这篇就够了)

2.在java中直接调用python脚本

在本地的D盘创建一个python脚本,文件名字为javaPythonFile.py,文件内容如下:

a = 1
b = 2
print (a + b)

创建JavaPythonFile.java类,内容如下:

package com.test;

import org.python.util.PythonInterpreter;

public class JavaPythonFile {

  public static void main(String[] args) {
    PythonInterpreter interpreter = new PythonInterpreter();
    interpreter.execfile("D:\\javaPythonFile.py");
  }
}

输出结果如下:

详解java调用python的几种用法(看这篇就够了)

3.使用Runtime.getRuntime()执行python脚本文件,推荐使用

在本地的D盘创建一个python脚本,文件名字为Runtime.py,文件内容如下:

print('RuntimeDemo')

创建RuntimeFunction.java类,内容如下:

package com.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class RuntimeFunction {
  public static void main(String[] args) {
    Process proc;
    try {
      proc = Runtime.getRuntime().exec("python D:\\Runtime.py");
      BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
      String line = null;
      while ((line = in.readLine()) != null) {
        System.out.println(line);
      }
      in.close();
      proc.waitFor();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (InterruptedException e) {
      e.printStackTrace();
    } 
  }
}

运行结果如下:

详解java调用python的几种用法(看这篇就够了)

4.调用python脚本中的函数

在本地的D盘创建一个python脚本,文件名字为add.py,文件内容如下:

def add(a,b):
  return a + b

创建Function.java类,内容如下:

package com.test;

import org.python.core.PyFunction;
import org.python.core.PyInteger;
import org.python.core.PyObject;
import org.python.util.PythonInterpreter;

public class Function {
  
  public static void main(String[] args) {
    PythonInterpreter interpreter = new PythonInterpreter();
    interpreter.execfile("D:\\add.py");
        
    // 第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型
    PyFunction pyFunction = interpreter.get("add", PyFunction.class);
    int a = 5, b = 10;
    //调用函数,如果函数需要参数,在Java中必须先将参数转化为对应的“Python类型”
    PyObject pyobj = pyFunction.__call__(new PyInteger(a), new PyInteger(b)); 
    System.out.println("the anwser is: " + pyobj);
  }

}

运行结果如下:

详解java调用python的几种用法(看这篇就够了)

到此这篇关于详解java调用python的几种用法(看这篇就够了)的文章就介绍到这了,更多相关java调用python内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
全面解读Python Web开发框架Django
Jun 30 Python
Python的装饰器用法学习笔记
Jun 24 Python
Python画图学习入门教程
Jul 01 Python
pandas 数据结构之Series的使用方法
Jun 21 Python
python实现门限回归方式
Feb 29 Python
基于Django signals 信号作用及用法详解
Mar 28 Python
Python requests模块cookie实例解析
Apr 14 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
python调用私有属性的方法总结
Jul 24 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
浅析Python 责任链设计模式
Sep 11 Python
python绘制简单直方图(质量分布图)的方法
Apr 21 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 #Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 #Python
python 实现ping测试延迟的两种方法
Dec 10 #Python
弄清Pytorch显存的分配机制
Dec 10 #Python
python实现经纬度采样的示例代码
Dec 10 #Python
Python urlopen()参数代码示例解析
Dec 10 #Python
Python urllib request模块发送请求实现过程解析
Dec 10 #Python
You might like
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
解密效果
2006/06/23 Javascript
JS中style属性
2006/10/11 Javascript
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
Express系列之multer上传的使用
2017/10/27 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
实例讲解Python中函数的调用与定义
2016/03/14 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
移动通信行业实习自我鉴定
2013/09/28 职场文书
手工社团活动方案
2014/02/17 职场文书
美术指导助理求职信
2014/04/20 职场文书
秋天的图画教学反思
2014/05/01 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
检讨书范文
2019/04/16 职场文书