java读取python脚本方法之一(小demo)。Java:让我来架起桥梁

Java读取python脚本文件

写之前小编要说一下哈,最近公司的事情比较多,开发任务比较繁重,周三要上线项目。周六周日也在忙着加班,加上自己买了个外星人,沉迷于LOL无法自拔中…所以导致最近对自我的约束怠慢了也懒惰了许多,好久没有写自己的博客。重要的是体重也在上升!于今晚11点自我挣扎中,还是开起了电脑进行自我约束,积极投身到学习中钻研技术。
事实上,很多时候,在公司都将需要调取人工智能的接口,如python接口来进行一个数据分析,这两年python也是在语言榜上一直飙升,十分的热门,作为java开发的我们来说,很多时候都有过调用它的经验,建立连接,http请求,封装数据,传值,解析数据…十分的繁琐,网上也有很多利用第三方插件去调取的方式等等,本人用的最终的方式是用流的形式成功将java封装的数据交给python解析成功返回数据,由于是项目中不方便展示,所以在此特地写下一个小demo来和伙伴们一起学习。

1.1下载python

首先本电脑(服务器)上要有python的环境,很简单,苹果电脑自带python,linux同样也是,作为用windows系统的来说,也比较简单,只要到网站------python下载
点击进入官网
在这里插入图片描述

1.2 选择正确系统下的python下载

在这里插入图片描述

1.3安装

因为我电脑已经装了python,接下来的步骤我不在过多指引,不会装的朋友们可以去找教程,总之是比装Java环境简单的多,不需要配置环境变量,而后,查看本机是否安装上python,
在这里插入图片描述
进入黑窗口,输入"python",如下图所示,则成功安装上python
在这里插入图片描述

2.1编写.py脚本文件

java的文件以后缀".java",python文件为".py"文件。在这里,因为是demo,我编写一个简单的python脚本文件,做一个除法的运算吧

import sys
 
def func(a,b):
    return (a/b)
 
if __name__ == '__main__':
    a = []
    for i in range(1, len(sys.argv)):
        a.append((int(sys.argv[i])))
 
    print(func(a[0],a[1]))

2.2编写Java文件(使用Runtime.getRuntime()执行python脚本文件)

上面的py文件可以先用text编写,而后修改后缀名".py",或者是可以下载python的开发工具pyCharm,接下来开始编译我的java类,内容如下
在这里插入图片描述

public class Test {
    public static void main(String[] args) {
        int a=10;
        int b=9;
        try {
            String[] args1 = new String[] { "python", "D:\\demoPython.py", String.valueOf(a), String.valueOf(b) };
            Process proc = Runtime.getRuntime().exec(args1);// 执行py文件

            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line = null;
            while ((line = in.readLine()) != null) {
                System.err.println(line);
            }
            in.close();
            proc.waitFor();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }
}

注意要正确的填写编译的.py文件绝对路径
在这里插入图片描述
调用python成功!!
很简单,这就是利用Java的getruntime()读取python文件,而不用进行接口调用的方法了,节省了很多调用的时间,优化了代码构造,同时要注意的是,传给python的参数一定要是string数组。
还有很多的方法来调用python,我用了其中最简单的方法,感兴趣的同学还可以看看jython,但是用的人不多,我比较推荐自己的这个方法。有需求的同学参考参考吧!

猜你喜欢

转载自blog.csdn.net/goGoing_/article/details/100088025