5188大數(shù)據(jù)官網(wǎng)seo推廣是做什么
在java類中直接執(zhí)行python語句
在java類中直接調(diào)用本地python腳本
使用Runtime.getRuntime()執(zhí)行python腳本文件(推薦)
調(diào)用python腳本中的函數(shù)
簡單介紹
官網(wǎng)地址?首頁 | (jython.org)
Jython項目提供了Java中的Python實現(xiàn), 為Python提供了在JVM上運(yùn)行的好處,并可以訪問用Java編寫的類。 當(dāng)前版本(Jython 2.7.x)僅支持Python 2(抱歉)。 在項目的GitHub存儲庫中有一個關(guān)于Python 3的工作。
Jython實現(xiàn)可免費(fèi)用于商業(yè)和非商業(yè)用途。 它們與?PSF 許可證 v2?下的源代碼一起分發(fā)。
Jython是Java的補(bǔ)充,特別適合以下任務(wù):
- 嵌入式腳本 - Java 程序員可以將 Jython 庫添加到他們的系統(tǒng)中,以允許最終用戶編寫簡單或復(fù)雜的腳本,為應(yīng)用程序添加功能。
- 交互式實驗 - Jython 提供了一個交互式解釋器,可用于與 Java 包或正在運(yùn)行的 Java 應(yīng)用程序進(jìn)行交互。這允許程序員使用Jython試驗和調(diào)試任何Java系統(tǒng)。
- 快速應(yīng)用程序開發(fā) - Python 程序通常比同等的 Java 程序短 2-10 倍。這直接轉(zhuǎn)化為程序員生產(chǎn)力的提高。Python和Java之間的無縫交互允許開發(fā)人員在開發(fā)和發(fā)布產(chǎn)品期間自由混合這兩種語言。
下面是在一個簡單的 Java 應(yīng)用程序中運(yùn)行 Python 代碼的示例
import org.python.util.PythonInterpreter;public class JythonHelloWorld {public static void main(String[] args) {try(PythonInterpreter pyInterp = new PythonInterpreter()) {pyInterp.exec("print('Hello Python World!')");}}
}
下面是從 Python 代碼使用 Java 的示例
from java.lang import System # Java importprint('Running on Java version: ' + System.getProperty('java.version'))
print('Unix time from Java: ' + str(System.currentTimeMillis()))
準(zhǔn)備工作:
創(chuàng)建maven工程,結(jié)構(gòu)如下:關(guān)注箭頭的幾個類即可
到官網(wǎng)Downloads | Jython下載Jython的jar包或者在maven的pom.xml文件中加入如下代碼:
<dependency><groupId>org.python</groupId><artifactId>jython-standalone</artifactId><version>2.7.0</version>
</dependency>
???????
1.在java類中直接執(zhí)行python語句
?創(chuàng)建JavaRunPython.java類:
package com.test;import org.python.util.PythonInterpreter;public class JavaRunPython {public static void main(String[] args) {PythonInterpreter interpreter = new PythonInterpreter();interpreter.exec("a='hello world'; ");interpreter.exec("print a;");}}
輸出結(jié)果如下:
2.在java中直接調(diào)用python腳本
在本地的D盤創(chuàng)建一個python腳本,文件名字為javaPythonFile.py,文件內(nèi)容如下:
a = 1
b = 2
print (a + b)
創(chuàng)建JavaPythonFile.java類,內(nèi)容如下:
package com.test;import org.python.util.PythonInterpreter;public class JavaPythonFile {public static void main(String[] args) {PythonInterpreter interpreter = new PythonInterpreter();interpreter.execfile("D:\\javaPythonFile.py");}
}
輸出結(jié)果如下:
3.使用Runtime.getRuntime()執(zhí)行python腳本文件,推薦使用
在本地的D盤創(chuàng)建一個python腳本,文件名字為Runtime.py,文件內(nèi)容如下:
print('RuntimeDemo')
創(chuàng)建RuntimeFunction.java類,內(nèi)容如下:
package com.test;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class RuntimeFunction {public static void main(String[] args) {Process proc;try {proc = Runtime.getRuntime().exec("python D:\\Runtime.py");BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));String line = null;while ((line = in.readLine()) != null) {System.out.println(line);}in.close();proc.waitFor();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();} }
}
4.調(diào)用python腳本中的函數(shù)
在本地的D盤創(chuàng)建一個python腳本,文件名字為add.py,文件內(nèi)容如下:
def add(a,b):return a + b
創(chuàng)建Function.java類,內(nèi)容如下:
package com.test;import org.python.core.PyFunction;
import org.python.core.PyInteger;
import org.python.core.PyObject;
import org.python.util.PythonInterpreter;public class Function {public static void main(String[] args) {PythonInterpreter interpreter = new PythonInterpreter();interpreter.execfile("D:\\add.py");// 第一個參數(shù)為期望獲得的函數(shù)(變量)的名字,第二個參數(shù)為期望返回的對象類型PyFunction pyFunction = interpreter.get("add", PyFunction.class);int a = 5, b = 10;//調(diào)用函數(shù),如果函數(shù)需要參數(shù),在Java中必須先將參數(shù)轉(zhuǎn)化為對應(yīng)的“Python類型”PyObject pyobj = pyFunction.__call__(new PyInteger(a), new PyInteger(b)); System.out.println("the anwser is: " + pyobj);}}
運(yùn)行結(jié)果如下: