Java调用Python脚本并获取返回值

摘要:
在Java程序中,有时需要调用Python程序。此时,您可以使用通用PyFunctions调用python函数并获取返回值。但是,此方法中可能会出现一些无法解释的错误,例如ImportError。此时,您可以使用该文件作为脚本参数来传递Python程序所需的参数,并从脚本的输入和输出流中获得本应在控制台上打印的结果。

在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError。在这种情况下可以采用另一种方法:使用Java的Runtime,像在命令行直接调用python脚本那样调用python程序。此时可以通过文件作为脚本参数来传递Python程序所需要的参数,并从脚本的输入输出流来获取本来该打印在控制台的结果。

先准备好一个python文件:

defget_path(filename):
    y_t =np.loadtxt(filename)
    peolpex =int(y_t[0][0])
    peolpey = int(y_t[0][1])
    firex = int(y_t[1][0])
    firey = int(y_t[1][1])
    answer =getQ(peolpex, peolpey, firex, firey)
    returnanswer
if __name__ == "__main__":
    filename = sys.argv[1]
    #print(filename)
    #root = Tk()
    #canvas = Canvas(root, bg="white")
    #canvas.pack()
    #colors = ['red', 'orange',  'green', 'black','yellow','white','pink']

    result =get_path(filename)
    #with open(filename, 'w') as f:
    #f.write(result)
    print result

对应的Java程序如下:

String result = "";
        try{
            Process process = Runtime.getRuntime().exec("python /home/jia/fireevacuation/my.py " +filename);
//process.waitFor();
            InputStreamReader ir = newInputStreamReader(process.getInputStream());
            LineNumberReader input = newLineNumberReader(ir);
            result =input.readLine();
            input.close();
            ir.close();
//process.waitFor();
        } catch(IOException e) {
            logger.error("调用python脚本并读取结果时出错:" +e.getMessage());
        }
        return result;

免责声明:文章转载自《Java调用Python脚本并获取返回值》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Lua function 函数C# 获取 串口 设备名称 与 串口号 ManagementObjectSearcher类下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

scrapy爬虫成长日记之将抓取内容写入mysql数据库

前面小试了一下scrapy抓取博客园的博客(您可在此查看scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据),但是前面抓取的数据时保存为json格式的文本文件中的。这很显然不满足我们日常的实际应用,接下来看下如何将抓取的内容保存在常见的mysql数据库中吧。 说明:所有的操作都是在“scrapy爬虫成长日记之创建工程-抽取数据-保存为j...

Python环境搭建

Python下载 Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到: Python官网:http://www.python.org/ 你可以在以下链接中下载 Python 的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。 Python文档下载地址:www.python.org/doc/ Window...

【python-opencv】性能衡量和提升技术

在图像处理中,由于每秒要处理大量操作,因此必须使代码不仅提供正确的解决方案,而且还必须以最快的方式提供。因此,在本章中,你将学习 衡量代码的性能。 一些提高代码性能的技巧。 你将看到以下功能:cv.getTickCount,cv.getTickFrequency等。 除了OpenCV,Python还提供了一个模块time,这有助于衡量执行时间。另一个模...

python中json.loads 返回类型是str 而不是 dict

   解析本地文件中的Json文件时,json.loads 之后的返回类型是str ,直接上代码 import json with open ("urlJson.txt",'r',encoding='utf-8') as f: data = f.read() json_str = json.dumps(data) print (t...

Sublime Text3 python自动补全问题——Sublime Text3安装Anaconda插件

学习python的时候 在编辑器的选择上会有很多选择,我最终还是选择了sublime text3。 相对于其他编辑器,sublime text有以下特性: 插件多,类似GoSublime,Emmet信手拈来,非常顺手。 UI很漂亮,操作顺畅,无呆滞感,界面简洁有利于集中精力到代码之中。 代码地图是亮点。 强大的代码补全,自动缩进。 快捷键很好用,当初...

基于django2.2的网页构建

安装django pip install django==2.2 建一个在线商城的项目 django-admin startproject pyshop 启动项目 python manage.py runserver 页面访问效果 http://127.0.0.1:8000 建议一个项目的app 产品 products djan...