java调用Python
2016-05-15 11:54
555 查看
在java里面调用Python可以采用process类的方法来调用,具体方法如下:
将调用Python的方法封装成为一个类OpenPython,run()方法为调用Python代码执行,并获得返回值,getResult()为获得返回值。
Python代码如下,文件名为my_utils.py
客户端调用
将调用Python的方法封装成为一个类OpenPython,run()方法为调用Python代码执行,并获得返回值,getResult()为获得返回值。
public class OpenPython { private String path;//路径 private List<String> args=new ArrayList<String>();//参数 private List<String> result=new ArrayList<String>();//返回值 OpenPython(String path,List<String> args){ this.path=path; this.args=args; } //参数组装 private String[] parameterCombine(){ String[] argg=new String[2+args.size()]; argg[0]="python"; argg[1]=path; for(int i=0;i<args.size();i++){ argg[2+i]=args.get(i); } return argg; } public void run(){ try{ Process pr=Runtime.getRuntime().exec(parameterCombine()); pr.waitFor(); BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream())); String line; while ((line = in.readLine()) != null) { result.add(line); } pr.waitFor(); }catch(Exception e){ e.printStackTrace(); } } public List<String> getResult(){ return this.result; } }
Python代码如下,文件名为my_utils.py
print( "script name:", sys.argv[0]) for i in range(1, len(sys.argv)): print ("Parameter:", i, sys.argv[i]) print( "script name:", int(sys.argv[1])+int(sys.argv[2]))
客户端调用
public static void main(String args[]){ String path="H:\\my_utils.py"; List<String> argg=new ArrayList<String>(); argg.add("1"); argg.add("2"); OpenPython open=new OpenPython(path,argg); open.run(); List<String> result=open.getResult(); for(int i=0;i<result.size();i++){ System.out.println(result.get(i)); } }
相关文章推荐
- python练习五—简单web应用
- Python语法
- Python-格式化字符串
- Python第五讲
- ArcMap中使用arcpy进行网格截图
- [python爬虫]爬取学校教务处以及登录过程验证码的处理
- python调试
- python调试
- python2 与 python3 语法区别
- python函数定义
- Python对文件操作知识汇总
- DAY2 Python 标准库 -> Getpass 模块 -> 命令行下输入密码的方法.
- python异常处理(基础)
- DAY2 raw_input() 与 input() Python
- Emacs Python completer
- Python闲谈(二)聊聊最小二乘法以及leastsq函数
- python爬虫基础
- Python之赋值与深浅拷贝
- python 静态方法、类方法(二)
- Python 静态方法、类方法