JAVA读写Python脚本


编写读取Python的工具类。
 
import org.python.util.PythonInterpreter;
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;


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

 

 测试调用*.py的python脚本是否能用
 
import java.io.IOException;
public class JythonUtilTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String path = "E:\\PythonScript\\hello.py";
        try {
            //通过工具类的pythonexecute方法执行*.py的脚本,传入文件路径
            JythonUtil.pythonExecute(path);
            System.out.println("执行成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 


评论关闭