最近疯狂研究java调用python方式,也是刚开始接触python,认识不深,研究成果如下:
环境:win10+eclipse+python3.6
关于调用方式:
1.在python脚本里没有使用到第三方模块的情况下,可以使用jython的方式去调用,可以直接在java方法里调用脚本里函数,并获取返回值,这样的案例在网上很多
但是要使用到第三方模块,如:pandas、scipy、numpy等,采用jython方式调用失败,至少我没看到这样的案例,所以才有下面的方式
2.使用runtime的方式调用python脚本,可以调用python里的第三方模块,如numpy、pandas等,runtime的方式就是在cmd命令下执行脚本命令,通过打印的方式把计算的数据打印出来,这样可以通过流的方式捕获这些数据,从而获取返回值,这个方式其实不是很稳妥的方式,但可以满足调用的需求,下面展示java调用部分代码:
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("python D:/py/pyfolio-master/test.py 2 3"); //其中2 3传的参数,可以在脚本中获取
InputStream stderr = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader