【Java后台】Java执行Python代码的3类5种情况测试【Java源码+Python源码举例】
生活随笔
收集整理的這篇文章主要介紹了
【Java后台】Java执行Python代码的3类5种情况测试【Java源码+Python源码举例】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.why
python擁有的某些庫要比Java強大,也擁有一些比Java更擅長的領域,python可以搭建后端讓Java調用接口,但某些時候我們用到的python代碼可能并不多也許只有一個算法,此時就需要以下方法了。
2.核心依賴
毫無疑問【自然是python的Java執行器了】
<dependency><groupId>org.python</groupId><artifactId>jython-standalone</artifactId><version>2.7.0</version> </dependency>3.使用
3.1類型一【直接執行python代碼】
public class ExecPythonCode {public static void main(String[] args) {PythonInterpreter interpreter = new PythonInterpreter();interpreter.exec("a=[5,2,3,9,4,0];");// 此處python語句是3.x版本的語法interpreter.exec("print(sorted(a));"); // 此處是python語句是2.x版本的語法interpreter.exec("print sorted(a);"); interpreter.close();} }3.2類型二【執行python文件后獲取返回結果】
3.3類型三【讀取python文件內的函數進行執行】
public class ExecPythonFileCode {public static void main(String[] args) {PythonInterpreter interpreter = new PythonInterpreter();interpreter.execfile("D:\\PythonFile.py");PyFunction function = interpreter.get("add", PyFunction.class);int a = 3, b = 12;PyObject pyObject = function.__call__(new PyInteger(a), new PyInteger(b));System.out.println("The result is : " + pyObject);interpreter.close();} }4.python文件和執行腳本
文件一:PythonFile.py
import numpy as np a = np.arange(12).reshape(3,4) print(a) def add(a,b):return a+b;文件二:PythonFileWithArgs.py
import sysdef func(a,b):return (a+b)if __name__ == '__main__':a = []for i in range(1, len(sys.argv)):a.append((int(sys.argv[i])))print(func(a[0],a[1]))文件三:RunPythonFile.bat
@echo off cmd /k python E:\Anaconda3_Python\PythonFile.py 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【Java后台】Java执行Python代码的3类5种情况测试【Java源码+Python源码举例】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux部署】elasticsear
- 下一篇: 【JavaScript代码】使用Java