您的位置:首页 > 编程语言 > Python开发

JAVA 与 Python 脚本间相互调用实例

2017-05-23 11:53 627 查看
JAVA 如何调用 Python 脚本?

我们知道Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。

Jython由于继承了Java和Python二者的特性而显得很独特。与Java的无缝集成,Jython能使任何部署了Java应用和框架的公司受益而不需要额外的工作。接受任何一种部门的编程语言,对任何一个公司而言都是不容易的,需要深思熟虑,因为这牵涉到整体结构、服务器和外围的工具。

安装Jython 环境 下载 jython_installer-2.5.2:



安装完之后在CMD 输入 jython 出现如下图说明安装成功:



安装完成后生成一个JAR 包 导入java中就可以了:



然后怎么知道能不能直接调用jython 呢?在java中运行下面代码 返回TRUE则说明可以调用了:

//在java类中直接执行python语句
public void test() {        interpreter.exec("days('mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");
interpreter.exec("print days[1];");
}


我们接下来写如何调用Python 代码:

/**
* jython库测试
* @author mengfeiyang
*
*/
public class JavaExecutePython {
public static ArrayList<String> list;
public PythonInterpreter interpreter ;
public String scriptFile = "D:\\eclipseworkspace\\pydev\\python\\";

public static void setList(ArrayList<String> list) {
JavaExecutePython.list = list;
System.out.print("改变后的值是:"+list);
}

public JavaExecutePython(){
interpreter = new PythonInterpreter();
};

//在java类中直接执行python语句
public void test01() {
interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");
interpreter.exec("print days[1];");
}

//在java中调用本机python脚本中的函数
public void test02(){
a02b

interpreter.execfile(scriptFile+"my_utils2.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());
}

//直接执行Python脚本
public void test03(){
interpreter.execfile(scriptFile+"input.py");
}

public ArrayList<String> getList(){
list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
return this.list;
}


创建Python脚本:

在目录 D:\eclipseworkspace\pydev\python\ 下建立名为 input.py 脚本代码:

#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 的ToJython 包下面的 JavaExecutePython 类
from ToJython import JavaExecutePython
execpy = JavaExecutePython()

def setList(list):
return list

def getList():
#调用 JavaExecutePython 类下面的getList方法
list = execpy.getList();
list[0] = "b";
print list;
#调用 JavaExecutePython 类下面的setList方法
execpy.setList(list);
return list

getList()


在目录 D:\eclipseworkspace\pydev\python\ 下建立名为my_utils.py脚本代码:

def adder(a, b):
a = 2013;b = 2
return a + b


在java中直接执行Python脚本:



在java中调用本机python脚本中的函数:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: