码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA读写Python脚本

时间:2015-09-16 20:15:38      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:python   python脚本   java脚本   

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、执行结果:

    技术分享

本文出自 “听雨盼永恒” 博客,请务必保留此出处http://yongguang.blog.51cto.com/9153118/1695375

JAVA读写Python脚本

标签:python   python脚本   java脚本   

原文地址:http://yongguang.blog.51cto.com/9153118/1695375

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!