python调用python脚本,Java调用python脚本
java调用python脚本有两种常见的方法。下面我们来介绍一下:
由.的Jython.jar提供的类库实现
通过runtime . get runtime()打开流程来执行脚本文件。
热门IT软件开发工作室,大量免费python视频教程,欢迎在线学习!
两种方法我都试过了。我个人推荐第二种方法,因为Python有时候需要使用第三方库,比如requests,Jython不支持。所以最好的方法是在本地安装Python环境和第三个库,然后用Java调用。
相关:《Python基础教程》
下面两个有参数和无参数的小例子展示了如何使用Java调用Python脚本:
Python代码:
defhello():
打印(“你好,Python”)
if__name__==__main__:
Hello()Java代码:
import Java . io . buffered reader;
import Java . io . inputstreamreader;
publicclassHelloPython{
publicstaticvoidmain(String[]args){
string[]arguments=new string[]{ python , e ://workspace/hello . py };
尝试{
process process=runtime . get runtime()。exec(参数);
buffered reader in=newbuffered reader(newInputStreamReader(process . getinputstream(),
GBK”));
Stringline=null
while((line=in.readLine())!=null){
system . out . println(line);
}
in . close();
//java代码中process.waitFor()的返回值为0,表示我们成功调用了python脚本,
//返回值1表示
调用python脚本失败,这和我们通常意义上见到的0与1定义正好相反
intre=process.waitFor();
System.out.println(re);
}catch(Exceptione){
e.printStackTrace();
}
}
}其中说明一点,BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));这段代码中的GBK是为了防止Python输出中文时乱码加的。
运行结果:
接下来是带参数的,Python代码:
importsysJava代码:
defhello(name,age):
print('name:'+name)
print('age:'+age)
if__name__=='__main__':
hello(sys.argv[1],sys.argv[2])
importjava.io.BufferedReader;运行结果:importjava.io.InputStreamReader;
publicclassHelloPython{
publicstaticvoidmain(String[]args){
String[]arguments=newString[]{"python","E://workspace/hello.py","lei","23"};
try{
Processprocess=Runtime.getRuntime().exec(arguments);
BufferedReaderin=newBufferedReader(newInputStreamReader(process.getInputStream(),
"GBK"));
Stringline=null;
while((line=in.readLine())!=null){
System.out.println(line);
}
in.close();
//java代码中的process.waitFor()返回值为0表示我们调用python脚本成功,
//返回值为1表示调用python脚本失败,这和我们通常意义上见到的0与1定义正好相反
intre=process.waitFor();
System.out.println(re);
}catch(Exceptione){
e.printStackTrace();
}
}
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。