在java类中直接执行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>
创建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.并不是错误,而是兼容所导致,解决方法如下:



在本地的D盘创建一个python脚本,文件名字为javaPythonFile.py,文件内容如下:
a = 1b = 2print (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");
}
}输出结果如下:

在本地的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();
}
}
}运行结果如下:

在本地的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);
}
}运行结果如下:

本站声明:内容源自https://www.cnblogs.com/wuwuyong/p/10600749.html(cnblogs)
鲁公网安备 37010402000926号 