详解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中的匿名函数使用简介
Apr 27 Python
python中实现指定时间调用函数示例代码
Sep 08 Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 Python
详解python中list的使用
Mar 15 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
pandas的排序和排名的具体使用
Jul 31 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
python如何查看网页代码
Jun 07 Python
python3 kubernetes api的使用示例
Jan 12 Python
Python列表的深复制和浅复制示例详解
Feb 12 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 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中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
Google韩国首页图标动画效果
2007/08/26 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
python爬取51job中hr的邮箱
2016/05/14 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
荷兰网上鞋店:Ziengs.nl
2017/01/02 全球购物
4s店总经理岗位职责
2013/12/31 职场文书
小学六年级学生评语
2014/04/22 职场文书
表彰大会策划方案
2014/05/13 职场文书
国际贸易求职信
2014/07/05 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
Python基础之变量的相关知识总结
2021/06/23 Python
关于JavaScript回调函数的深入理解
2021/06/27 Javascript
python开发的自动化运维工具ansible详解
2021/08/07 Python
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS