麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Java > 正文

Java與Python之間使用jython工具類實(shí)現(xiàn)數(shù)據(jù)交互

2024-07-14 08:43:56
字體:
供稿:網(wǎng)友

最近有個功能需要java與python之間的數(shù)據(jù)交互,java需要把參數(shù)傳給python,然后python計算的結(jié)果返回給java.于是就寫了一個工具類.

首先,maven 需要加載jython的依賴.工具類代碼如下:

import java.util.List;import java.util.Map;import java.util.Properties;import org.apache.poi.ss.formula.functions.T;import org.python.core.PyFunction;import org.python.core.PyInteger;import org.python.core.PyObject;import org.python.core.PyString;import org.python.util.PythonInterpreter;/**   * @ClassName: JythonUtils   * @Description:TODO(jython 工具類)   * @author: zy * @date: *    * @Copyright: 2018 Inc. All rights reserved.  * 注意: */public class JythonUtils { /**   * @Title: jythonInit   * @Description: TODO(初始化jython)   * @param: @return    * @return: PythonInterpreter    * @throws   */ public static PythonInterpreter jythonInit(){ //初始化site 配置 Properties props = new Properties();    props.put("python.home", ""); //python Lib 或 jython Lib,根據(jù)系統(tǒng)中該文件目錄路徑    props.put("python.console.encoding", "UTF-8");        props.put("python.security.respectJavaAccessibility", "false");        props.put("python.import.site", "false");    Properties preprops = System.getProperties();    PythonInterpreter.initialize(preprops, props, new String[0]);    //創(chuàng)建PythonInterpreter 對象 PythonInterpreter interp = new PythonInterpreter(); return interp; } /**   * @Title: loadPythonFile   * @Description: TODO(加載python 源碼文件,)   * @param: @param interp * @param: @param filePath ,比如:F://jpython_jar//jpythonTest//pythonTest.py 或/testpython/test.py * @param: @return    * @return: PythonInterpreter    * @throws   */ public static PythonInterpreter loadPythonFile(PythonInterpreter interp, String filePath){ interp.execfile(filePath); return interp; } /**   * @Title: loadPythonFunc   * @Description: TODO(加載python 源碼文件中的某個方法)   * @param: @param interp * @param: @param functionName * @param: @return    * @return: PyFunction    * @throws   */ public static PyFunction loadPythonFunc(PythonInterpreter interp, String functionName){ //加載方法   PyFunction func = (PyFunction) interp.get(functionName,PyFunction.class); return func; } /**   * @Title: execFunc   * @Description: TODO(執(zhí)行無參方法,返回PyObject)   * @param: @param func    * @return: PyObject    * @throws   */ public static PyObject execFunc(PyFunction func){ PyObject pyobj = func.__call__(); return pyobj; } /**   * @Title: execFuncToString   * @Description: TODO(執(zhí)行無參方法,返回一個字符串)   * @param: @param func * @param: @return    * @return: String    * @throws   */ public static String execFuncToString(PyFunction func){ PyObject pyobj = execFunc(func); return (String) pyobj.__tojava__(String.class); } /**   * @Title: execFuncToString   * @Description: TODO(執(zhí)行有參方法,返回一個字符串)   * @param: @param func * @param: @param paramName ,參數(shù)名 * @param: @return    * @return: String    * @throws   */ public static String execFuncToString2(PyFunction func, String paramName){  PyObject pyobj = func.__call__(new PyString(paramName)); return (String) pyobj.__tojava__(String.class); } /**   * @Title: execFuncToInteger   * @Description: TODO(執(zhí)行無參方法,返回一個Integer)   * @param: @param func * @param: @return    * @return: Integer    * @throws   */ public Integer execFuncToInteger(PyFunction func){ PyObject pyobj = execFunc(func); return (Integer) pyobj.__tojava__(Integer.class); } /**   * @Title: execFuncToList   * @Description: TODO(執(zhí)行無參方法,返回一個List)   * @param: @param func * @param: @return    * @return: List<T>    * @throws   */ public List<T> execFuncToList(PyFunction func){ PyObject pyobj = execFunc(func); return (List<T>) pyobj.__tojava__(List.class); } /**   * @Title: execFuncToMap   * @Description: TODO(執(zhí)行無參方法,返回一個Map<String, Object>)   * @param: @param func * @param: @return    * @return: Map<String,Object>    * @throws   */ public Map<String, Object> execFuncToMap(PyFunction func){ PyObject pyobj = execFunc(func); return (Map<String, Object>) pyobj.__tojava__(Map.class); } public void execFuncToByParamsList(PyFunction func, List<T> paramsList){ } public static void main(String[] args){ PythonInterpreter interp = jythonInit(); //文件名 String filePath = "F://jpython_jar//jpythonTest//pythonTest.py"; interp = loadPythonFile(interp, filePath); //函數(shù)名 String functionName = "count"; PyFunction func = loadPythonFunc(interp, functionName); //執(zhí)行無參方法,返回PyObject PyObject pyobj = execFunc(func); //執(zhí)行無參方法,返回String String resultStr = execFuncToString(func); //執(zhí)行有參方法,返回String String paramName = "name"; String resultStr2 = execFuncToString2(func, paramName); }}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對VeVb武林網(wǎng)的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 99视频有精品视频高清 | 亚洲成人第一页 | 日日噜噜噜噜久久久精品毛片 | 亚洲综合中文 | 一级啪啪片 | 国产亚洲精品久久久久久久久 | 欧美一级毛片特黄黄 | 精品亚洲在线 | 一级黄色在线免费观看 | 午夜久久久精品一区二区三区 | 国产亚洲精品成人a | 黄色视频a级毛片 | 亚洲国产精久久久久久久 | 欧美三级短视频 | 精品亚洲va在线va天堂资源站 | av在线免费电影 | 红桃一区| 一级毛片电影网 | 激情久久一区二区 | 亚洲成人高清电影 | 在线观看国产免费视频 | 亚洲va久久久噜噜噜久久男同 | 欧美片a| 欧美不卡| 亚洲骚图| 91网在线播放 | 国产精品亚洲欧美一级在线 | 久久激情国产 | 92看片淫黄大片欧美看国产片 | 久草在线播放视频 | 青草久久网 | 日本免费aaa观看 | 久久免费激情视频 | 99精彩视频在线观看 | 欧美精品一区二区视频 | 亚洲欧美日韩久久精品第一区 | www69xxxxx| 99视频观看 | 国产刺激高潮av | 久久影城| 成人在线观看一区 |