详解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中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
彻底搞懂Python字符编码
Jan 23 Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 Python
Matplotlib 生成不同大小的subplots实例
May 25 Python
python format 格式化输出方法
Jul 16 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
python xpath获取页面注释的方法
Jan 14 Python
更新修改后的Python模块方法
Mar 03 Python
Python列表list常用内建函数实例小结
Oct 22 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
Jan 25 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
Dec 16 Python
Python函数中的不定长参数相关知识总结
Jun 24 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
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
js获取url传值的方法
2015/12/18 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
js实现随机点名程序
2020/09/17 Javascript
jQuery实现获取多选框的值示例
2020/02/07 jQuery
Python字符串处理实例详解
2017/05/18 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
Django REST framework视图的用法
2019/01/16 Python
python import 上级目录的导入
2020/11/03 Python
python 实现超级玛丽游戏
2020/11/25 Python
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
大三预备党员入党思想汇报
2014/01/08 职场文书
消防安全汇报材料
2014/02/08 职场文书
代办委托书怎样写
2014/04/08 职场文书
2014年统计工作总结
2014/11/21 职场文书
2015年乡镇环保工作总结
2015/04/22 职场文书
入党积极分子考察意见
2015/06/02 职场文书
感恩老师主题班会
2015/08/12 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
Python深度学习之实现卷积神经网络
2021/06/05 Python
自动在Windows中运行Python脚本并定时触发功能实现
2021/09/04 Python
解析python中的jsonpath 提取器
2022/01/18 Python