Jython - Java 應用程式



下載 jython-standalone-2.7.0.jar - 從其官方下載頁面嵌入 Jython 到 Java 應用程式:http://www.jython.org/downloads.html 並將此 jar 檔案包含在 Java CLASSPATH 環境變數中。

此庫包含 PythonInterpreter 類。使用此類的物件,可以使用 execfile() 方法執行任何 Python 指令碼。PythonInterpreter 允許您直接使用 PyObjects。Jython 執行時系統已知的所有物件都由 PyObject 類或其子類的例項表示。

PythonInterpreter 類有一些常用方法,如下表所示。

序號 方法和描述
1

setIn(PyObject)

設定用於標準輸入流的 Python 物件

2

setIn(java.io.Reader)

設定用於標準輸入流的 java.io.Reader

3

setIn(java.io.InputStream)

設定用於標準輸入流的 java.io.InputStream

4

setOut(PyObject)

設定用於標準輸出流的 Python 物件

5

setOut(java.io.Writer)

設定用於標準輸出流的 java.io.Writer

6

setOut(java,io.OutputStream)

設定用於標準輸出流的 java.io.OutputStream

7

setErr(PyObject)

設定用於標準錯誤流的 Python 錯誤物件

8

setErr(java.io.Writer

設定用於標準錯誤流的 java.io.Writer

9

setErr(java.io.OutputStream)

設定用於標準錯誤流的 java.io.OutputStream

10

eval(String)

將字串作為 Python 原始碼進行評估並返回結果

11

eval(PyObject)

評估 Python 程式碼物件並返回結果

12

exec(String)

在本地名稱空間中執行 Python 源字串

13

exec(PyObject)

在本地名稱空間中執行 Python 程式碼物件

14

execfile(String filename)

在本地名稱空間中執行 Python 原始檔

15

execfile(java.io.InputStream)

在本地名稱空間中執行 Python 源輸入流

16

compile(String)

將 Python 源字串編譯為表示式或模組

17

compile(script, filename)

將 Python 源指令碼編譯為表示式或模組

18

set(String name, Object value)

在本地名稱空間中設定 Object 型別的變數

19

set(String name, PyObject value)

在本地名稱空間中設定 PyObject 型別的變數

20

get(String)

獲取本地名稱空間中變數的值

21

get(String name, Classjavaclass

獲取本地名稱空間中變數的值。該值將作為給定 Java 類的例項返回。

下面的程式碼塊是一個 Java 程式,其中嵌入了 Jython 指令碼 “hello.py”。使用 PythonInterpreter 物件的 execfile() 方法。它還展示瞭如何使用 set() 和 get() 方法設定或讀取 Python 變數。

import org.python.util.PythonInterpreter;
import org.python.core.*;

public class SimpleEmbedded {
   public static void main(String []args) throws PyException {
      PythonInterpreter interp = new PythonInterpreter();
      System.out.println("Hello, world from Java");
      interp.execfile("hello.py");
      interp.set("a", new PyInteger(42));
      interp.exec("print a");
      interp.exec("x = 2+2");
      PyObject x = interp.get("x");
      System.out.println("x: "+x);
      System.out.println("Goodbye ");
   }
}

編譯並執行上述 Java 程式以獲得以下輸出。

Hello, world from Java
hello world from Python
42
x: 4
Goodbye
廣告