忧郁者 发表于 2017-4-27 07:12:23

[转]在Java中调用Python

在执行之前都需要把jython对应的包加载进去,这个是必须的。

 
1.在java类中直接执行python语句
 view plaincopy



[*]import javax.script.*;  
[*]  
[*]import org.python.util.PythonInterpreter;  
[*]  
[*]import java.io.*;  
[*]import static java.lang.System.*;  
[*]public class FirstJavaScript  
[*]{  
[*] public static void main(String args[])  
[*] {  
[*]    
[*]  PythonInterpreter interpreter = new PythonInterpreter();  
[*]  interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");  
[*]  interpreter.exec("print days;");  
[*]    
[*]    
[*] }//main  
[*]}  


这样得到的结果是Tue,在控制台显示出来,这是直接进行调用的。
2.在java中调用本机python脚本中的函数:
   首先建立一个python脚本,名字为:my_utils.py
 view plaincopy



[*]def adder(a, b):  
[*]    return a + b  

然后建立一个java类,用来测试,
java类代码 FirstJavaScript:
 view plaincopy



[*]import javax.script.*;  
[*]  
[*]import org.python.core.PyFunction;  
[*]import org.python.core.PyInteger;  
[*]import org.python.core.PyObject;  
[*]import org.python.util.PythonInterpreter;  
[*]  
[*]import java.io.*;  
[*]import static java.lang.System.*;  
[*]public class FirstJavaScript  
[*]{  
[*]    public static void main(String args[])  
[*]    {  
[*]          
[*]        PythonInterpreter interpreter = new PythonInterpreter();  
[*]        interpreter.execfile("C:\\Python27\\programs\\my_utils.py");  
[*]        PyFunction func = (PyFunction)interpreter.get("adder",PyFunction.class);  
[*]  
[*]        int a = 2010, b = 2 ;  
[*]        PyObject pyobj = func.__call__(new PyInteger(a), new PyInteger(b));  
[*]        System.out.println("anwser = " + pyobj.toString());  
[*]  
[*]  
[*]    }//main  
[*]}  

得到的结果是:anwser = 2012
3.使用java直接执行python脚本,
建立脚本inputpy
 view plaincopy



[*]#open files  
[*]  
[*]print 'hello'  
[*]number=[3,5,2,0,6]  
[*]print number  
[*]number.sort()  
[*]print number  
[*]number.append(0)  
[*]print number  
[*]print number.count(0)  
[*]print number.index(5)  


建立java类,调用这个脚本:
 view plaincopy



[*]import javax.script.*;  
[*]  
[*]import org.python.core.PyFunction;  
[*]import org.python.core.PyInteger;  
[*]import org.python.core.PyObject;  
[*]import org.python.util.PythonInterpreter;  
[*]  
[*]import java.io.*;  
[*]import static java.lang.System.*;  
[*]public class FirstJavaScript  
[*]{  
[*] public static void main(String args[])  
[*] {  
[*]    
[*]  PythonInterpreter interpreter = new PythonInterpreter();  
[*]  interpreter.execfile("C:\\Python27\\programs\\input.py");  
[*] }//main  
[*]}  


得到的结果是:
 view plaincopy



[*]hello  
[*]  
[*]  
[*]  
[*]2  
[*]3  
页: [1]
查看完整版本: [转]在Java中调用Python