Java执⾏Python脚本
概述
术业有专攻,Java适合做企业级平台应⽤,或者云计算,⼤数据相关平台等。Python则擅长于⼩⼯具应⽤。
两种⽅式
Runtime
根据有⽆⼊参
⽆⼊参
public static void testPythonWithRuntime(){
Process proc;
try{
proc = Runtime().exec("python D:\\demo1.py");
//⽤输⼊输出流来截取结果
BufferedReader in= new BufferedReader(new InputStream()));
String line;
while((line =in.readLine())!= null){
System.out.println(line);
}
in.close();
proc.waitFor();
} catch (IOException | InterruptedException e){
e.printStackTrace();
}
}
有⼊参
public static void testPythonWithRuntime1(){
int a =18;
int b =23;
try{
String[] args = new String[]{"python","D:\\demo.py", String.valueOf(a), String.valueOf(b)};
Process proc = Runtime().exec(args);
BufferedReader in= new BufferedReader(new InputStream()));
String line;
while((line =in.readLine())!= null){
java调用python模型System.out.println(line);
}
in.close();
proc.waitFor();
} catch (IOException | InterruptedException e){
e.printStackTrace();
}
}
优缺点
⽆需额外引⼊依赖
Jython
Jpython简介:⼀种完整的语⾔,⽽不仅仅是⼀个Java翻译器或Python编译器,它是⼀个Python语⾔在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何⾼级语⾔,它提供了对其实现语⾔的⼀切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有⼀个巨⼤的资源库。
引⼊依赖:
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7.2</version>
</dependency>
PythonInterpreter interpreter =new PythonInterpreter();
<("a=[5,2,3,9,4,0]; ");
<("print(sorted(a));");// python 3.x 语法
<("print sorted(a);");// python 2.x 语法
执⾏脚本⽰例代码:
public static void testPythonWithJython(){
PythonInterpreter interpreter =new PythonInterpreter();
// 第⼀个参数为期望获得的函数(变量)的名字,第⼆个参数为期望返回的对象类型 PyFunction pyFunction = ("add", PyFunction.class);
// 调⽤有参函数,必须先将参数转化为对应的Python类型
PyObject pyobj = pyFunction.__call__();
System.out.println("the anwser is: "+ pyobj);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论