详解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 socket网络编程TCP/IP服务器与客户端通信
Jan 05 Python
Python正则表达式完全指南
May 25 Python
Python数据结构之栈、队列的实现代码分享
Dec 04 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
Python OpenCV实现图片上输出中文
Jan 22 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
在django项目中导出数据到excel文件并实现下载的功能
Mar 13 Python
为什么是 Python -m
Jun 19 Python
深入了解Python 方法之类方法 &amp; 静态方法
Aug 17 Python
python在linux环境下安装skimage的示例代码
Oct 14 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 Python
Python os和os.path模块详情
Apr 02 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
非常不错的MySQL优化的8条经验
2008/03/24 PHP
PHP 数组实例说明
2008/08/18 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
初识JQuery 实例一(first)
2011/03/16 Javascript
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
非常漂亮的js烟花效果
2020/03/10 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
Python实现的矩阵类实例
2017/08/22 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
Python中一些深不见底的“坑”
2019/06/12 Python
django云端留言板实例详解
2019/07/22 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
实习生自我鉴定范文
2013/12/05 职场文书
企业文明单位申报材料
2014/05/16 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
Python pyecharts绘制条形图详解
2022/04/02 Python