java調用python的幾種用法(看這篇就夠了)


java調用python的幾種用法如下:

在java類中直接執行python語句

在java類中直接調用本地python腳本

使用Runtime.getRuntime()執行python腳本文件(推薦)

調用python腳本中的函數

 

准備工作:

創建maven工程,結構如下:

 

到官網https://www.jython.org/download.html下載Jython的jar包或者在maven的pom.xml文件中加入如下代碼:

<dependency>
    <groupId>org.python</groupId>
    <artifactId>jython-standalone</artifactId>
    <version>2.7.0</version>
</dependency>

1.在java類中直接執行python語句

 創建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;");
    }

}

輸出結果如下:

出現的console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0.並不是錯誤,而是兼容所導致,解決方法如下:

2.在java中直接調用python腳本

在本地的D盤創建一個python腳本,文件名字為javaPythonFile.py,文件內容如下:

a = 1
b = 2
print (a + b)

創建JavaPythonFile.java類,內容如下:

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");
    }
}

輸出結果如下:

 

3.使用Runtime.getRuntime()執行python腳本文件,推薦使用

在本地的D盤創建一個python腳本,文件名字為Runtime.py,文件內容如下:

print('RuntimeDemo')

創建RuntimeFunction.java類,內容如下:

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.調用python腳本中的函數

在本地的D盤創建一個python腳本,文件名字為add.py,文件內容如下:

def add(a,b):
    return a + b

創建Function.java類,內容如下:

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");
                
        // 第一個參數為期望獲得的函數(變量)的名字,第二個參數為期望返回的對象類型
        PyFunction pyFunction = interpreter.get("add", PyFunction.class);
        int a = 5, b = 10;
        //調用函數,如果函數需要參數,在Java中必須先將參數轉化為對應的“Python類型”
        PyObject pyobj = pyFunction.__call__(new PyInteger(a), new PyInteger(b)); 
        System.out.println("the anwser is: " + pyobj);
    }

}

運行結果如下:

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM