java调用python的几种用法如下:
创建maven工程
<dependency><groupId>org.python</groupId><artifactId>jython-standalone</artifactId><version>2.7.0</version></dependency>
在java类中直接执行python语句
创建JavaRunPython.java类:
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;");}}
在java类中直接调用本地python脚本
import org.python.util.PythonInterpreter;public class JavaPythonFile {public static void main(String[] args) {PythonInterpreter interpreter = new PythonInterpreter();interpreter.execfile("D:\\PythonFile.py");}}
使用Runtime.getRuntime()执行python脚本文件(推荐)
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();}}}
调用python脚本中的函数
在本地的D盘创建一个python脚本,文件名字为add.py,文件内容如下:
def add(a,b):return a + b
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);}}
