java中执行python脚本工具类

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

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

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;
    }

}

标签: 脚本

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:Android实现图片的异步载入显示

下一篇:C++截取字符串子串实现