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则说明可以调用了:
我们接下来写如何调用Python 代码:
创建Python脚本:
在目录 D:\eclipseworkspace\pydev\python\ 下建立名为 input.py 脚本代码:
在目录 D:\eclipseworkspace\pydev\python\ 下建立名为my_utils.py脚本代码:
在java中直接执行Python脚本:
在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脚本中的函数:
相关文章推荐
- [zz]使用thrift做c++,java和python的相互调用
- 使用thrift做c++,java和python的相互调用 - jinghong - ITeye技术网站
- Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
- Linux(centos 6.5) 调用java脚本以及定时执行的脚本实例及配置文件详解
- Java调用Python脚本
- PYTHON 与C相互交互调用实例解析
- 使用thrift做c++,java和python的相互调用
- Java调用Python脚本
- selenium python脚本调用java script 报Message: u'$ is not defined' ; Stacktrace 的解决历程
- Python与Java之间的相互调用——Jython
- java和python相互调用
- JAVA调用shell脚本实例
- java调用python脚本之tomcat中
- Java调用Python脚本
- java如何与脚本(javaScript)之间相互调用(转)
- 利用thrift在c++、java和python之间相互调用
- java直接调用python脚本的例子
- java直接调用python脚本的例子
- Python实例浅谈之三Python与C/C++相互调用
- Java调用Python脚本