Java实现的执行python脚本工具类示例【使用jython.jar】


Posted in Python onMarch 29, 2018

本文实例讲述了Java实现的执行python脚本工具类。分享给大家供大家参考,具体如下:

这里java中执行python脚本工具类,需要使用jython.jar

java中执行python脚本工具类,学习的时候写着玩:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.python.core.PyObject;
import org.python.util.PythonInterpreter;
public final class JythonUtil {
  private JythonUtil(){}
  /**
   * 执行某个.py文件
   * @param filePath
   * @throws IOException
   */
  public static void pythonExecute(String filePath) throws IOException{
    PythonInterpreter pin = new PythonInterpreter();
    InputStream is = new FileInputStream(filePath);
    pin.execfile(is);
    is.close();
  }
  /**
   * 获取python程序的变量值
   * @param filePath
   * @param ponames
   * @return
   * @throws IOException
   */
  public static List<PyObject> transP2JData(String filePath, String...ponames) throws IOException{
    PythonInterpreter pin = new PythonInterpreter();
    InputStream is = new FileInputStream(filePath);
    pin.execfile(is);
    is.close();
    List<PyObject> pos = new ArrayList<>();
    for (String poname : ponames) {
      PyObject po = pin.get(poname);
      pos.add(po);
    }
    return pos;
  }
  /**
   * 将参数赋给python程序执行
   * @param filePath
   * @param pomaps
   * @throws IOException
   */
  public static void transJ2PData(String filePath, Map<String, Object> pomaps) throws IOException {
    PythonInterpreter pin = new PythonInterpreter();
    InputStream is = new FileInputStream(filePath);
    for (String pomapkey : pomaps.keySet()) {
      pin.set(pomapkey, pomaps.get(pomapkey));
    }
    pin.execfile(is);
    is.close();
  }
  /**
   * 将参数赋给python程序执行,并获取python中的变量值
   * @param filePath
   * @param pomaps
   * @param ponames
   * @return
   * @throws IOException
   */
  public static List<PyObject> transJ2PData(String filePath, Map<String, Object> pomaps, String...ponames) throws IOException {
    PythonInterpreter pin = new PythonInterpreter();
    InputStream is = new FileInputStream(filePath);
    for (String pomapkey : pomaps.keySet()) {
      pin.set(pomapkey, pomaps.get(pomapkey));
    }
    pin.execfile(is);
    is.close();
    List<PyObject> pos = new ArrayList<>();
    for (String poname : ponames) {
      PyObject po = pin.get(poname);
      pos.add(po);
    }
    return pos;
  }
}

附:jython.jar点击此处本站下载

更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

Python 相关文章推荐
Python Web框架Pylons中使用MongoDB的例子
Dec 03 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
python 字典(dict)按键和值排序
Jun 28 Python
浅析python协程相关概念
Jan 20 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
python入门之基础语法学习笔记
Feb 08 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
Nov 02 Python
python自动化之如何利用allure生成测试报告
May 02 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 05 Python
教你使用python画一朵花送女朋友
Mar 29 #Python
使用python生成目录树
Mar 29 #Python
python实现树形打印目录结构
Mar 29 #Python
Python基础教程之利用期物处理并发
Mar 29 #Python
Windows下安装Django框架的方法简明教程
Mar 28 #Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 #Python
Python实现发送与接收邮件的方法详解
Mar 28 #Python
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
PHP 学习路线与时间表
2010/02/21 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
jquery 笔记 事件
2011/11/02 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
Python reduce函数作用及实例解析
2020/05/08 Python
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
数据库的约束含义
2012/09/09 面试题
单位介绍信范文
2014/01/18 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
土建施工员岗位职责
2014/07/16 职场文书
企业法人授权委托书
2014/09/25 职场文书
大学生入党自荐书
2015/03/05 职场文书
最感人的道歉情书
2015/05/12 职场文书
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python