详解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将阿拉伯数字转换为罗马数字的方法
Jul 10 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
python实现多线程的方式及多条命令并发执行
Jun 07 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
python docx 中文字体设置的操作方法
May 08 Python
在PyCharm导航区中打开多个Project的关闭方法
Jan 17 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
如何基于python测量代码运行时间
Dec 25 Python
Python安装OpenCV的示例代码
Mar 05 Python
python 获取字典键值对的实现
Nov 12 Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 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随机输出名人名言的代码
2012/10/07 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
PHP实现微信对账单处理
2018/10/01 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
jquery 防止表单重复提交代码
2010/01/21 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
python使用pil生成缩略图的方法
2015/03/26 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
python查看模块,对象的函数方法
2018/10/16 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
python构建指数平滑预测模型示例
2019/11/21 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
Python while true实现爬虫定时任务
2020/06/08 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
介绍一下gcc特性
2012/01/20 面试题
2014年大学宣传部工作总结
2014/12/19 职场文书
创先争优承诺书
2015/01/20 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
简历自我评价范文
2019/04/24 职场文书
理解python中装饰器的作用
2021/07/21 Python
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL