一、在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");
二、執行結果:
工具