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

相關文章
相關標籤/搜索