JAVA读写Python脚本

一、在Eclipse或者Myeclipse的java工程中导入Jython.jar包。http://down.51cto.com/data/2094597 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脚本是否能用web

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

四、执行结果:eclipse

    一、hello.pyweb文件内容以下:
ide

    

        print("hello");


    二、执行结果:
工具

    wKioL1X5JKzDn8H1AACZcx10m_8352.jpg

相关文章
相关标签/搜索