JAVA读写Python脚本

1、在Eclipse或者Myeclipse的java工程中导入Jython.jar包。http://down.51cto.com/data/2094597


2、编写读取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;
    }
 
}

3、测试调用*.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();
		}
	}
}

4、执行结果:

    1、hello.pyweb文件内容如下:

    

        print("hello");


    2、执行结果:

    wKioL1X5JKzDn8H1AACZcx10m_8352.jpg

你可能感兴趣的:(python,java脚本,python脚本)