java中執行python腳本工具類

gd7g 9年前發布 | 4K 次閱讀 Java

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

}</pre>

 本文由用戶 gd7g 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!