栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

java调python脚本(找累了吧还没解决,不妨看看这里吧)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java调python脚本(找累了吧还没解决,不妨看看这里吧)

前言

接到的开发任务中涉及调取python脚本并执行,关于java调取Python脚本有好几种方法,大家可以自行百度,重点粘贴下我的代码(使用的是java的Runtime)与及说下我遇到的问题。

代码
 private linkedHashMap runtimePython(String id, String type) throws IOException, InterruptedException {
        linkedHashMap map = new linkedHashMap();
        //调用python脚本 获取预测趋势
        Process proc;
        String abPath = System.getProperty("catalina.home");
        char a = File.separatorChar;
        String phantomjsPath = abPath + a + "webapps" + a + "archetype-ui-istorm" + a + "phantomjs";
       
        String pythonPath = null;
        if (type.equals("pool")) {
            pythonPath = phantomjsPath + a + "python" + a + pythonPool;
        } else {
            pythonPath = phantomjsPath + a + "python" + a + pythonVolume;
        }
       
        String[] args = new String[]{python, pythonPath, id};
        proc = Runtime.getRuntime().exec(args);
        BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream(), "GBK"));
        String line = null;
        while ((line = in.readLine()) != null) {
            if (line.contains("[{")) {
                System.out.println(line);
                line = line.replaceAll("'", """);
                List linkedHashMap = JSON.parseArray(line, JSONObject.class);
                LOGGER.info("python返回数据", linkedHashMap);
                linkedHashMap.forEach(forecast -> {
                    map.put(forecast.getString("time"), forecast.getString("forecast"));
                });
            }
        }
        in.close();
        proc.waitFor();
        return map;
    }

补充说明:python、pythonPool和pythonVolume都是配置文件获取的值,其中第一个是python运行的环境,后两者都是脚本的名称。(对于该代码,有优化建议的也可提出,这是初版代码)

遇到的问题 问题一:获取脚本数据为Null

网上找了很多方法,我基本上都尝试了,包括按照一些依赖之类的,都无果。这个坑真是让人头皮发麻。
针对这个问题,给大家总结的一句话就是,多半是脚本需要的依赖,你没有安装全,但是直接一句话告诉你:那就安装呗,好像又有点不太负责!,谁都知道安装呗,但也不是这么好安装的。

下面展示下python脚本引入的依赖:

import os
import sys
import pandas as pd
import numpy as np
import math
from fbprophet import Prophet
import json
from pandas import Dataframe
# from utils.CommonUtils import CommonUtils
from datetime import timedelta
import datetime
import time
from collections import OrderedDict
import matplotlib.pyplot as plt
import itertools
import pymysql
import pytz
import importlib
importlib.reload(sys)

import warnings
warnings.filterwarnings("ignore")

待续~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757296.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号