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中用split()方法分割字符串的使用介绍
May 20 Python
解读Django框架中的低层次缓存API
Jul 24 Python
python生成器表达式和列表解析
Mar 10 Python
图解Python变量与赋值
Apr 03 Python
python2.7使用plotly绘制本地散点图和折线图
Apr 02 Python
详解爬虫被封的问题
Apr 23 Python
pytorch获取vgg16-feature层输出的例子
Aug 20 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
简单了解python列表和元组的区别
May 14 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 Python
Python环境配置实现pip加速过程解析
Nov 27 Python
python函数超时自动退出的实操方法
Dec 28 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
PHP入门速成(2)
2006/10/09 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
PHP 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
PDO::_construct讲解
2019/01/27 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python中mechanize库的简单使用示例
2014/01/10 Python
处理Python中的URLError异常的方法
2015/04/30 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Python for循环中的陷阱详解
2018/07/13 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python多进程使用函数封装实例
2020/05/02 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
理货员的岗位职责
2013/11/23 职场文书
人力资源总监工作说明
2014/03/03 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
幼儿园亲子活动总结
2014/04/26 职场文书
生活部的活动方案
2014/08/19 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
详解MindSpore自定义模型损失函数
2021/06/30 Python
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技