最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年03月06日 16:58:16   作者:texture_texture  
今天小編就為大家分享一篇關(guān)于Java與Python之間使用jython工具類(lèi)實(shí)現(xiàn)數(shù)據(jù)交互,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

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

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

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 工具類(lèi))  
 * @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 對(duì)象
 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 源碼文件中的某個(gè)方法)  
 * @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í)行無(wú)參方法,返回PyObject)  
 * @param: @param func   
 * @return: PyObject   
 * @throws  
 */
 public static PyObject execFunc(PyFunction func){
 PyObject pyobj = func.__call__();
 return pyobj;
 }
 /**  
 * @Title: execFuncToString  
 * @Description: TODO(執(zhí)行無(wú)參方法,返回一個(gè)字符串)  
 * @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í)行有參方法,返回一個(gè)字符串)  
 * @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í)行無(wú)參方法,返回一個(gè)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í)行無(wú)參方法,返回一個(gè)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í)行無(wú)參方法,返回一個(gè)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í)行無(wú)參方法,返回PyObject
 PyObject pyobj = execFunc(func);
 //執(zhí)行無(wú)參方法,返回String
 String resultStr = execFuncToString(func);
 //執(zhí)行有參方法,返回String
 String paramName = "name";
 String resultStr2 = execFuncToString2(func, paramName);
 }
}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • Java如何生成帶網(wǎng)站鏈接(URL)的二維碼

    Java如何生成帶網(wǎng)站鏈接(URL)的二維碼

    自從微信掃描出世,二維碼掃描逐漸已經(jīng)成為一種主流的信息傳遞和交換方式,這篇文章主要給大家介紹了關(guān)于Java如何生成帶網(wǎng)站鏈接(URL)的二維碼的相關(guān)資料,文中通過(guò)圖文實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-07-07
  • 總結(jié)Bean的三種自定義初始化和銷(xiāo)毀方法

    總結(jié)Bean的三種自定義初始化和銷(xiāo)毀方法

    這篇文章主要介紹了Bean的三種自定義初始化和銷(xiāo)毀方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java程序員常見(jiàn)的sql錯(cuò)誤

    java程序員常見(jiàn)的sql錯(cuò)誤

    當(dāng)Java程序員在SQL中要寫(xiě)個(gè)查詢語(yǔ)句是很簡(jiǎn)單的。但在Java里類(lèi)似的語(yǔ)句卻不容易,因?yàn)槌绦騿T不僅要反復(fù)考慮編程范式,而且也要考慮算法的問(wèn)題。下面我們來(lái)看看這幾個(gè)常見(jiàn)的錯(cuò)誤吧
    2019-06-06
  • Java泛型類(lèi)型擦除

    Java泛型類(lèi)型擦除

    這篇文章主要為大家詳細(xì)介紹了Java泛型類(lèi)型擦除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • idea無(wú)法打斷點(diǎn),單擊或雙擊代碼行左側(cè)區(qū)域無(wú)效的解決

    idea無(wú)法打斷點(diǎn),單擊或雙擊代碼行左側(cè)區(qū)域無(wú)效的解決

    這篇文章主要介紹了idea無(wú)法打斷點(diǎn),單擊或雙擊代碼行左側(cè)區(qū)域無(wú)效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java 泛型有哪些好處詳解

    Java 泛型有哪些好處詳解

    這篇文章主要介紹了 Java 泛型有哪些好處詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Spring Security 在 Spring Boot 中的使用詳解【集中式】

    Spring Security 在 Spring Boot 中的使用詳解【集中式】

    這篇文章主要介紹了Spring Security 在 Spring Boot 中的使用【集中式】,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java自定義實(shí)現(xiàn)equals()方法過(guò)程解析

    Java自定義實(shí)現(xiàn)equals()方法過(guò)程解析

    這篇文章主要介紹了Java自定義實(shí)現(xiàn)equals()方法過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 使用Java操作Parquet文件的基本步驟

    使用Java操作Parquet文件的基本步驟

    Parquet 是一個(gè)強(qiáng)大的列式存儲(chǔ)格式,適用于大數(shù)據(jù)場(chǎng)景,能夠高效地進(jìn)行數(shù)據(jù)壓縮、查詢和存儲(chǔ),在 Java 中使用 Apache Spark 讀取和寫(xiě)入 Parquet 文件是一項(xiàng)常見(jiàn)的任務(wù),本文給大家介紹了在 Java 中使用 Spark 來(lái)讀取和寫(xiě)入 Parquet 文件的基本步驟,需要的朋友可以參考下
    2025-03-03
  • 關(guān)于idea無(wú)法修改模板中jdk版本問(wèn)題

    關(guān)于idea無(wú)法修改模板中jdk版本問(wèn)題

    這篇文章主要介紹了關(guān)于idea無(wú)法修改模板中jdk版本問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論

刚察县| 米脂县| 军事| 广水市| 日喀则市| 平陆县| 阿鲁科尔沁旗| 五常市| 忻州市| 南华县| 广水市| 同江市| 沙雅县| 同心县| 甘泉县| 恩施市| 延吉市| 和田县| 德化县| 车致| 通山县| 黄骅市| 贞丰县| 永定县| 秦皇岛市| 攀枝花市| 无锡市| 苍梧县| 南京市| 县级市| 微山县| 出国| 抚州市| 镇远县| 盐池县| 永嘉县| 水富县| 江城| 辽源市| 旌德县| 阿克陶县|