详解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使用psutil模块获取系统状态
Aug 27 Python
Python中的sort()方法使用基础教程
Jan 08 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
Jan 18 Python
python如何实现异步调用函数执行
Jul 08 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 Python
keras打印loss对权重的导数方式
Jun 10 Python
零基础小白多久能学会python
Jun 22 Python
详解python 条件语句和while循环的实例代码
Dec 28 Python
总结python多进程multiprocessing的相关知识
Jun 29 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 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
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
php中神奇的fastcgi_finish_request
2011/05/02 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
javascript知识点收藏
2007/02/22 Javascript
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
幼儿园教师获奖感言
2014/03/11 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
PHP策略模式写法
2021/04/01 PHP
golang在GRPC中设置client的超时时间
2021/04/27 Golang
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
基于Python实现西西成语接龙小助手
2022/08/05 Golang