python调用python脚本,Java调用python脚本

  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代码:

  

importsys

  

  defhello(name,age):

  print('name:'+name)

  print('age:'+age)

  

  if__name__=='__main__':

  hello(sys.argv[1],sys.argv[2])

Java代码:

  

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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: