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执行外部程序的常用方法小结
Mar 21 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
Python WEB应用部署的实现方法
Jan 02 Python
浅谈pycharm使用及设置方法
Sep 09 Python
Django框架ORM数据库操作实例详解
Nov 07 Python
PyTorch加载预训练模型实例(pretrained)
Jan 17 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
Python 实现将某一列设置为str类型
Jul 14 Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 Python
python实现粒子群算法
Oct 15 Python
python批量更改目录名/文件名的方法
Apr 18 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 读取文件的正确方法
2009/04/29 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
JavaScript 原型继承
2011/12/26 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
实测jquery data()如何存值
2013/08/18 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
python实现自主查询实时天气
2018/06/22 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
对pandas写入读取h5文件的方法详解
2018/12/28 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
python爬虫中多线程的使用详解
2019/09/23 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
Django多数据库联用实现方法解析
2020/11/12 Python
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
大学社团活动策划书
2014/01/26 职场文书
医学求职自荐信
2014/06/21 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
SQL Server中使用表变量和临时表
2022/05/20 SQL Server