Java与Python之间使用jython工具类实现数据交互

  

最近有个功能需要java与python之间的数据交互,java需要把参数传给python,然后python计算的结果返回给java。于是就写了一个工具类。

  

<强>首先,maven需要加载jython的依赖。工具类代码如下:

        进口并不知道;   进口java.util.Map;   进口java.util.Properties;   进口org.apache.poi.ss.formula.functions.T;   进口org.python.core.PyFunction;   进口org.python.core.PyInteger;   进口org.python.core.PyObject;   进口org.python.core.PyString;   进口org.python.util.PythonInterpreter;/* *   * @ClassName: JythonUtils   * @Description:待办事项(jython工具类)   * @author: zy   * @date:   *   * @Copyright: 2018公司。保留所有权利。   *注意:   */公开课JythonUtils {/* *   * @Title: jythonInit   * @Description:待办事项(初始化jython)   * @param: @return   * @return: PythonInterpreter   * @throws   */公共静态PythonInterpreter jythonInit () {//初始化网站配置   属性道具=new属性();   props.put (“python。家”、“”);//python自由或jython自由,根据系统中该文件目录路径   props.put (“python.console。编码”、“utf - 8”);   props.put (“python.security。respectJavaAccessibility”、“假”);   props.put (“python.import。网站”,“假”);   属性preprops=System.getProperties ();   PythonInterpreter。初始化(preprops,道具,新字符串[0]);//创建PythonInterpreter对象   PythonInterpreter插值函数=new PythonInterpreter ();   返回插值函数;   }/* *   * @Title: loadPythonFile   * @Description:待办事项(加载python源码文件,)   * @param: @param插值函数   * @param: @param filePath,比如:F: \ \ jpython_jar \ \ jpythonTest \ \ pythonTest。py或/testpython/test.py   * @param: @return   * @return: PythonInterpreter   * @throws   */公共静态PythonInterpreter loadPythonFile (PythonInterpreter插值函数,字符串filePath) {   interp.execfile (filePath);   返回插值函数;   }/* *   * @Title: loadPythonFunc   * @Description:待办事项(加载python源码文件中的某个方法)   * @param: @param插值函数   * @param: @param functionName   * @param: @return   * @return: PyFunction   * @throws   */公共静态PyFunction loadPythonFunc (PythonInterpreter插值函数,字符串functionName) {//加载方法   PyFunction func=(PyFunction) interp.get (functionName PyFunction.class);   返回函数;   }/* *   * @Title: execFunc   * @Description:待办事项(执行无参方法,返回PyObject)   * @param: @param func   * @return: PyObject   * @throws   */公共静态PyObject execFunc (PyFunction func) {   PyObject pyobj=func.__call__ ();   返回pyobj;   }/* *   * @Title: execFuncToString   * @Description:待办事项(执行无参方法,返回一个字符串)   * @param: @param func   * @param: @return   * @return:字符串   * @throws   */公共静态字符串execFuncToString (PyFunction func) {   PyObject pyobj=execFunc(函数);   返回(String) pyobj.__tojava__ (String.class);   }/* *   * @Title: execFuncToString   * @Description:待办事项(执行有参方法,返回一个字符串)   * @param: @param func   * @param: @param paramName,参数名   * @param: @return   * @return:字符串   * @throws   */公共静态字符串execFuncToString2 (PyFunction func,字符串paramName) {   PyObject pyobj=函数。__call__(新PyString (paramName));   返回(String) pyobj.__tojava__ (String.class);   }/* *   * @Title: execFuncToInteger   * @Description:待办事项(执行无参方法,返回一个整数)   * @param: @param func   * @param: @return   * @return:整数   * @throws   */公共整数execFuncToInteger (PyFunction func) {   PyObject pyobj=execFunc(函数);   返回(整数)pyobj.__tojava__ (Integer.class);   }/* *   * @Title: execFuncToList   * @Description:待办事项(执行无参方法,返回一个列表)   * @param: @param func   * @param: @return   * @return: List   * @throws   */公共ListexecFuncToList (PyFunction func) {   PyObject pyobj=execFunc(函数);   返回(List)   * @param: @param func   * @param: @return   * @return: Map<字符串,Object>   * @throws   */公共Map<字符串,Object>execFuncToMap (PyFunction func) {   PyObject pyobj=execFunc(函数);   返回(Map<字符串,Object>) pyobj.__tojava__ (Map.class);   }   公共空间execFuncToByParamsList (PyFunction func List

Java与Python之间使用jython工具类实现数据交互