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

Posted 萨姆大叔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java调用Python脚本并获取返回值相关的知识,希望对你有一定的参考价值。

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

先准备好一个python文件:

def get_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)
    return answer


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 = new InputStreamReader(process.getInputStream());
            LineNumberReader input = new LineNumberReader(ir);
            result = input.readLine();
            input.close();
            ir.close();
//            process.waitFor();
        } catch (IOException e) {
            logger.error("调用python脚本并读取结果时出错:" + e.getMessage());
        }
        return result;

 

以上是关于Java调用Python脚本并获取返回值的主要内容,如果未能解决你的问题,请参考以下文章

java调用shell脚本,并得到shell脚本的返回值

从使用 wkwebview 返回值的 javascript 调用 swift 函数

shell脚本调JAVA程序,获取JAVA程序返回值并echo输出

shell脚本调用pyhton脚本,获取返回值

python调用shell脚本 获取shell脚本中间的输出值

从PowerShell中使用参数和凭据启动.ps1脚本并从中获取输出