系统相关
首页 > 系统相关> > linux 环境下通过Java代码调用python脚本问题

linux 环境下通过Java代码调用python脚本问题

作者:互联网

调用python代码

application.properties中的python脚本路径配置,注意:python脚本路径不要加引号,例如:

InterfaceWaterMonitorAdditionRedundancyPath="/opt/python/QuRongYu.py",这样在调用时会出现不能打卡文件的错误。

#除冗余的脚本路径   服务器上路径不要加引号
InterfaceWaterMonitorAdditionRedundancyPath=/opt/python/QuRongYu.py
String[] argus = new String[]{"/usr/local/python3/bin/python3.6", InterfaceWaterMonitorAdditionRedundancyPath, fileName + "#" + argusBuffer.toString()};
            log.info("python:" + argus[0]);
            log.info("python path:" + argus[1]);
            log.info("argus:" + argus[2]);
            try {
                long start = System.currentTimeMillis();
                Process proc2 = Runtime.getRuntime().exec(argus);

                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        BufferedReader in = null;
                        try {
                            in = new BufferedReader(new InputStreamReader(proc2.getInputStream(), "gbk"));
                            String line = "";
                            while ((line = in.readLine()) != null) {
                                log.info("line:" + line);
                            }

                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                    }
                }).start();


                //错误流
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        String err = null;
                        while (true) {
                            try {
                                BufferedReader error = new BufferedReader(new InputStreamReader(proc2.getErrorStream(), "gbk"));
                                if (((err = error.readLine()) != null)) {
                                    log.info("error:" + err);
                                }
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }

                    }
                }).start();
                int x = proc2.waitFor();//0-成功  不是0,调用Python算法失败

其中:/usr/local/python3/bin/python3.6 python解析器路径寻找方法如下:

python
import sys
sys.path

 

 找到后如何确定是否找对路径呢,

可以用解析器路径直接调用python脚本,格式如下:

解析器路径 python脚本路径

/usr/local/python3/bin/python3.6 python脚本路径

建议python里面可以打印log,能够直观看出是否调用成功

标签:info,Java,log,python,路径,argus,linux,new
来源: https://blog.csdn.net/haodiaoji9386/article/details/123180527