Jython(原JPython),是一个用Java语言写的Python解释器。在没有第三方模块的情况下,通常选择利用Jython来调用Python代码,它是一个开源的JAR包,你可以到官网下载一个HelloPython程序importorg.python.util.PythonInterpreterpublicclassHelloPython{publicstaticvoidmain(String[]args){PythonInterpreterinterpreter=newPythonInterpreter()interpreter.exec("print('hello')")}}什么是PythonInterpreter?它的中文意思即是“Python解释器”。我们知道Python程序都是通过解释器来执行的,我们在Java中创建一个“解释器”对象,模拟Python解释器的行为,通过exec("Python语句")直接在JVM中执行Python代码,上面代码的输出结果为:hello在Jvm中执行Python脚本interpreter.execfile("D:/labs/mytest/hello.py")如上,将exec改为execfile就可以了。需要注意的是,这个.py文件不能含有第三方模块,因为这个“Python脚本”最终还是在JVM环境下执行的,如果有第三方模块将会报错:javaImportError:Nomodulenamedxxx仅在Java中调用Python编写的函数先完成一个hello.py代码:defhello():return'Hello'在Java代码中调用这个函数:importorg.python.core.PyFunctionimportorg.python.core.PyObjectimportorg.python.util.PythonInterpreterpublicclassHelloPython{publicstaticvoidmain(String[]args){PythonInterpreterinterpreter=newPythonInterpreter()interpreter.execfile("D:/labs/hello.py")PyFunctionpyFunction=interpreter.get("hello",PyFunction.class)//第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型PyObjectpyObject=pyFunction.__call__()//调用函数System.out.println(pyObject)}}上面的代码执行结果为:Hello即便只是调用一个函数,也必须先加载这个.py文件,之后再通过Jython包中所定义的类获取、调用这个函数。如果函数需要参数,在Java中必须先将参数转化为对应的“Python类型”,例如:__call__(newPyInteger(a),newPyInteger(b))a,b的类型为Java中的int型,还有诸如:PyString(Stringstring)、PyList(Iteratoriter)等。详细可以参考官方的api文档。包含第三方模块的情况:一个手写识别程序这是我和舍友合作写的一个小程序,完整代码在这里:,界面上引用了corejava上的一段代码。Python代码是舍友写的,因为在Python程序中使用了第三方的NumPy模块,导致无法通过Jython执行。下面这个方法纯粹是个人思路,没有深入查资料。核心代码如下:importjava.io.*classPyCaller{privatestaticfinalStringDATA_SWAP="temp.txt"privatestaticfinalStringPY_URL=System.getProperty("user.dir")+"\\test.py"publicstaticvoidwriteImagePath(Stringpath){PrintWriterpw=nulltry{pw=newPrintWriter(newFileWriter(newFile(DATA_SWAP)))}catch(IOExceptione){e.printStackTrace()}pw.print(path)pw.close()}publicstaticStringreadAnswer(){BufferedReaderbrStringanswer=nulltry{br=newBufferedReader(newFileReader(newFile(DATA_SWAP)))answer=br.readLine()}catch(FileNotFoundExceptione){e.printStackTrace()}catch(IOExceptione){e.printStackTrace()}returnanswer}publicstaticvoidexecPy(){Processproc=nulltry{proc=Runtime.getRuntime().exec("python"+PY_URL)proc.waitFor()}catch(IOExceptione){e.printStackTrace()}catch(InterruptedExceptione){e.printStackTrace()}}//测试码publicstaticvoidmain(String[]args)throwsIOException,InterruptedException{writeImagePath("D:\\labs\\mytest\\test.jpg")execPy()System.out.println(readAnswer())}}实际上就是通过Java执行一个命令行指令。
首先得声明一下,java是java,python是python,你用java得环境跑python这不是找麻烦吗,但是并不是说不行,java有一个Jpython得库,你可以下载一下,这方面原理设计jni技术,建议了解一下,如果单纯想运行一个脚本可以找Jpython得api文档看看如何在Java中调用Python代码
给您推荐相同类型的内容:
java18免费么
开始收费,以后收费。从网上下载下来的java软件是免费的,在使用过程中,有的是需要收费的,当然也有很多是免费的,如果是指开发工具,基本上都是免费的。1、java语言的更新还是很快的,现在已经是java15了,听说java16已经在路上了,之Python怎么知道主机部署了哪些网站
1、点击开始菜单,输入cmd,在查询出的结果中点击命令提示符。2、打开命令提示符窗口,输入命令piplist,按下回车键,可以查询出当前windows系统所有安装过的python库。3、双击桌面的此电脑图标,在打开的窗口中点击C盘。4、进入如何使用ruby debug, 想使用ruby的标准输入重定向,命令行是什么?
能调试,但是调试信息放到文件里了,调试干嘛还要放到文件里呢,调试完了没有问题再放到把结果写道文件里呗另外推荐 调试工具 pry欢迎关注微信订阅号: 订阅号搜索:ruby程序员,这里每天会分享ruby rails等相关技术作为一名shell(java中怎么创建一个数组
Java 中创建数组的基本格式为 type[] varname = new type[size]{item1, item2, item3},其中 type 表示元素的类型, size 表示创建数组的大小,在指定后面所有元素的情况下,这个大小python多线程配合键盘监听,为什么键盘监听不了
1、没有在设置中打开键盘监听的功能。2、接触不良导致键盘监听不了。Python由荷兰数学和计算机科学研究学会的GuidovanRossum于1990年代初设计,作为一门叫做ABC语言的替代品。MySQL 的 Binlog 记录着 MySQL用C语言画“动态圆受控旋转”
我把黄色改成红色了,这样好看一些,任意键停止!该程序我是在turboc2.0环境下编译通过的!注意我用initgraph()时说明我turboc是放在c盘下的.#include<graphics.h>#include国内最好的Java培训机构有哪些?
国内现在的java培训机构有千锋教育、IT培训网、中软国际教育集团、课工场、开课吧等等,这些都是知名的品牌。千锋教育就有线上免费Java线上公开课。随着IT行业特别是Java行业的迅速发展,企业对于技术人才Java程序员的需求量与日俱增。但ruby女孩名字什么寓意
ruby含义为“红宝石”,象征着高贵、珍贵、尊贵、稀有,形容女孩高贵不凡,体现出女孩的高贵优雅形象。这个英文名中文翻译为“露比”或者“鲁比”,读起来比较中性化,但不失女性色彩,作为女孩英文名,给人落落大方之感。ruby英文名例句:&quC语言中:有关指针地址的表达形式 printf("*(a+1) :",*(a+1)); char a[]="ao" for(i=0;*(a+i)!='';i++)
printf("*(a+1) :",*(a+1))写法是错的,你没写输出控制符,对于char a[],输出应该用%cprintf("*(a+1) :%c",*(a+1))*(a+1)是取数组a的下标为excel可以用ruby操纵吗
首先想些数据excel文件简单办应该考虑CSV Ruby支持比较且用excel直接打前提excel没特别复杂表结构式渲染等 例: Ruby代码 outfile = File.open('csvout', 'wbpython 数组 变成 字典的方法
1、现在有两个 列表 ,list1 = ['key1','key2','key3']和list2 = ['1','2','3Ruby Rose的个人经历
鲁比·洛斯 (Ruby Rose) 全名Ruby Rose Langenheim,是澳大利亚MTV音乐电视台主持人、电台DJ、模特,更是少数公开出柜的明星之一。鲁比·洛斯 (Ruby Rose) 是那种可以冷艳性感也可以中性帅气的美女,她的Java编程
我怕你是初学者对java的泛型和集合List不太熟悉,这里使用了栈Stack来完成,应该便于你理解。整体思路为:1、使用一个栈将输入的全部数字push进入;2、遍历第一个栈(挨个pop出来),遍历的时候把偶数和奇数分别push到新的一c语言求倍数
只要两个条件:1、a != 0 不等于02、a%b == 0 能整除int a, bscanf("%d%d", &a, &b)if ((a != 0java面试问独立解决过哪些难题
结合实际经验,回答你遇到的问题,或者你熟悉的技术,说说你遇到什么问题,怎么调研,怎么解决的,主要是解决问题的思路作为一个Java开发人员,我认为如果我考察一个人,就是看它是否真正理解什么是面向对象,首先会告诉一个例子,看他是不是用面向对象的c语言程序设计学什么
什么是C语言?C语言的简介。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅在Python中定义Main函数
print 'main'当脚本作为执行脚本时__name__的值为__main__当脚本作为模块时__name__为模块文件名。main函数在程序中大多数是必须存在的。C语言标准中强制要求main函数的返回值类型为intC语言怎么取CPU的各项信息?
X86处理器的型号,信息处理器家庭,高速缓存尺寸,时钟速度(频率)和制造商codename 等,存放在处理器的CPU ID寄存器组中。通过执行CPU ID指令集查询,即可获取处理器的相关信息。CPU ID汇编指令使用使用eax作为输入参数这是什么漫画跪求好心人告诉我
《RWBY》(中译:四色)是一部在2013年7月播出的动画。R、W、B、Y 分别是英语红白黑黄的首字母,代表的分别是四位女主角的主题色。由美国Rooster Teeth动画工作室RWBY团队制作,导演Monty Oum。目前第一季已完结。简想找java学习资料,去哪里找?
想找java学习资料建议去【达内教育】上找,该机构推出一套免费的Java视频教程,学员可以跟着进行免费学习。【达内教育】java培训办的优势:1、机构背景:达内Java培训起家,从事Java培训多年,从这里培训的学员数不胜数,大机构更有保障如何在R语言中读入数据和导出存储数据
1.R数据的保存与加载可通过save()函数保存为.Rdata文件,通过load()函数将数据加载到R中。[ruby] view plain copy> a <- 1:10> save(a,filec语言三个以上的选择是什么
c语言三个以上的选择是elseif函数。当选择函数的选项多于或者等于3个的时候则需要使用elseif函数。elseif和此名称暗示的一样,是if和else的组合。和else一样,延伸了if语句,能够在原来的if表达式值为FALSE时执行不同ruby怎么来定义方法返回拜托了各位 谢谢
ruby中每一个方法都有返回值,当然,不一定要使用return。当不使用return时,就返回调用方法时方法内最后一个表达式执行的结果。 当使用return语句时,这样方法的返回值就是return语句的参数。 当使用return语句时,返回Java游戏开发要学什么
Java游戏开发要学什么?所谓的游戏开发编程语言其实有很多,基本上任何一种语言都可以作为游戏服务器的编程语言。这需要根据自己游戏的类型和要求加以选择。比如C++,Java,Erlang,go等等。目前我用过的只有C++和Java.但是以Jac语言程序问题??自加与自减
一个整数自身加一可以这样写:a+=1它等价于a=a+1。但是在C语言中还有一种更简单的写法,就是a++或者++a。这种写法叫做自加或自增;意思很明确,就是自身加一。相应的,也有a--和--a,叫做自减,表示自身减一。++和--分别称为自增和java里break的作用
return语句的作用(1)return从当前的方法中退出,返回到该调用的方法的语句处,继续执行。(2)return返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。(3)return后面也可以不带参数,不杭州那几家软件外包公司技术比较好
哲程软件一直致力于提供最优秀的外包服务。哲程人本着“不断追求完美”的做事风格, 在众多项目实践过程中不断探索与优化项目管理流程建设。 哲程开发团队已形成自己一套独特的项目开发模式。这套模式有效地解决了项目开发过程中的管理和控制难点。 如:公关于Ruby
Ruby on Rails是一个用于编写网络应用程序的框架,它基于计算机软件语言Ruby,给程序开发人员提供强大的框架支持。Ruby on Rails包括两部分内容:Ruby语言和Rails框架。什么是Ruby?Ruby 语言是一种动态语言Python之DNS
dnspython( http:www.dnspython.org ) 是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展C语言编程入门书籍
C语言其实有很多好书,我们上学普遍学的是老谭的书,对于应付考试,考计算机等级够用了。但是对于一个真正想把编程当饭吃的人来说,这是根本不够的。从入门到精通,学习编程总有个过程。不同阶段看不同的书,或者看一本能“活到老,学到老”的书。编程书籍