Python webservice

import pandas
import xlwt
from suds.client import Client
import logging
import time



def getAirportCDsBychnName(airport_chn_name):
    api_url = 'http://.....MasterDataService?wsdl'  # 这里是你的webservice访问地址
    client = Client(api_url)
    params_dict = {"usrID": "MDMMASTERDATA" ,
                   "usrPwd": "MDM_CEAIR1_P2WD!" ,
                   "AIRPORT_CHN_NAME": airport_chn_name}
    result = client.service.queryMasterData(params_dict)
    AIRPORT_CDs =[]
    if len(result) != 0:
        s = str(result)
        c = s.count("AIRPORT_CD")
        for i in range(c):
            l = s.find("AIRPORT_CD")
            s = s[l:]
            l = s.find(" = ")
            s = s[l+3:]
            r = s.find("\n")
            AIRPORT_CDs.append(str(s[:r]).replace("\"" , ""))
        logging.info(airport_chn_name)
        logging.info(AIRPORT_CDs)
    return  AIRPORT_CDs

if __name__ == '__main__':
    FORMAT = time.strftime("[%Y-%m-%d %H:%M:%S]", time.localtime()) + "[gaosan1031]-----%(message)s------"
    logging.basicConfig(level=logging.INFO, format=FORMAT)
    city_hash = {}
    air_code = pandas.DataFrame(pandas.read_excel("C:/Users/liyang/Desktop/gaosan/airport_code.xlsx", sheetname=0)[:])
    x = air_code.values
    for r in x:
        if pandas.notnull(r[2]) :
            k = str(r[2]).replace(" " , "")
            v = str(r[0]).replace(" " , "") ;
            city_hash[k] = str(v)

    hangxian = pandas.DataFrame(pandas.read_excel("C:/Users/liyang/Desktop/x.xlsx", sheetname=0)[:])
    x = hangxian.values

    gaosan = xlwt.Workbook()
    sheet1 = gaosan.add_sheet('sheet1', cell_overwrite_ok=True)
    sheet1.write(0, 0, "起始日期")
    sheet1.write(0, 1, "终止日期")
    sheet1.write(0, 2, "班期")
    sheet1.write(0, 3, "航段")
    sheet1.write(0, 4, "承运方航班号")
    sheet1.write(0, 5, "市场方航班号")
    sheet1.write(0, 6, "原始航段")

    for i in range(len(x)):
        r = x[i]
        ft = str(r[3]).replace(" " , "").replace("—" , "-").replace("-" , "-").split("-")
        tu = ""
        for k in range(len(ft)) :
           v = None
           if city_hash.get(ft[k]):
               v = city_hash.get(ft[k])
           if v == None:
               cds = getAirportCDsBychnName(ft[k])
               if len(cds) == 0:
                   logging.info(ft[k])
                   logging.info("一个也找不到!")
               elif len(cds) == 1:
                   v = cds[0]

               if v == None:
                   v = "NONE"
           if k != 0 :
               tu = tu + "-" + v
           else:
               tu = tu + v
        print(ft , end="******")
        print(tu)
        sheet1.write(1+i , 0 , r[0])
        sheet1.write(1 + i, 1, r[1])
        sheet1.write(1 + i, 2, r[2])
        sheet1.write(1 + i, 3, tu)
        sheet1.write(1 + i, 4, r[4])
        sheet1.write(1 + i, 5, r[5])
        sheet1.write(1 + i, 6, r[3])

    gaosan.save("C:/Users/liyang/Desktop/gaosan/re2.xls")


import pandas
import xlwt
from suds.client import Client
import logging
import time

hash_names = {}


def getlinesByNbr(CARRIER_CD , FLT_NBR):
    api_url = 'http://.....PlanService?wsdl'
    client = Client(api_url)
    params_dict = {
         "usrID": "MDMPLAN" ,
         "usrPwd": "MDM_CEAIR1_P2WD!" ,
         "queryDetailInformation" :
             [ {
                 "CARRIER_CD" : CARRIER_CD ,
                 "FLT_NBR": FLT_NBR
               }
            ]
         }
    result = client.service.queryPlan(params_dict)
    lines =[]
    if len(result) != 0:
        s = str(result)
        c = s.count("LINE_SERIAL")
        for i in range(c):
            l = s.find("LINE_SERIAL")
            s = s[l:]
            l = s.find(" = ")
            s = s[l+3:]
            r = s.find("\n")
            lines.append(str(s[:r]).replace("\"" , ""))
    return lines

def replacePorts(ports , air_nbr , chn_names) :
    ports = str(ports).replace(" " , "").replace("—" , "-").replace("-" , "-")
    chn_names = str(chn_names).replace(" " , "").replace("—" , "-").replace("-" , "-")
    if ports.count("NONE") == 0 :
        return ports
    else:
        ps = getlinesByNbr(air_nbr[0:2], air_nbr[2:])
        p = ports.split("-")
        names = chn_names.split("-")
        for i in range(len(names)):
            if hash_names.get(names[i]):
                p[i] = hash_names.get(names[i])
        noneCnt = 0
        for r in p:
            if r == "NONE":
                noneCnt += 1
        if noneCnt == 0:
            prts = p[0]
            for i in range(1 , len(p)):
                prts = prts + "-" + p[i]
            print(prts)
            return prts
        for row in ps:
            r = str(row).replace(" " , "").replace("—" , "-").replace("-" , "-").split("-")
            if len(r) != len(p):
                continue
            sameCnt = 0
            for i in range(len(p)):
                if (p[i] == r[i]) and (p[i] != "NONE"):
                    sameCnt += 1
            if sameCnt == len(p) - noneCnt:
                for k in range(len(p)):
                    if p[k] == "NONE":
                        hash_names[names[k]] = r[k]
                        print(hash_names)
                return row
    return ports

if __name__ == '__main__':
    FORMAT = time.strftime("[%Y-%m-%d %H:%M:%S]", time.localtime()) + "[gaosan1031]-----%(message)s------"
    logging.basicConfig(level=logging.INFO, format=FORMAT)

    hangxian = pandas.DataFrame(pandas.read_excel("C:/Users/liyang/Desktop/re2.xls", sheetname=0)[:])
    x = hangxian.values

    gaosan = xlwt.Workbook()
    sheet1 = gaosan.add_sheet('sheet1', cell_overwrite_ok=True)
    sheet1.write(0, 0, "起始日期")
    sheet1.write(0, 1, "终止日期")
    sheet1.write(0, 2, "班期")
    sheet1.write(0, 3, "航段")
    sheet1.write(0, 4, "承运方航班号")
    sheet1.write(0, 5, "市场方航班号")
    sheet1.write(0, 6, "原始航段")

    for i in range(len(x)):
        r = x[i]
        ports = replacePorts(r[3] , r[4] , r[6])

        logging.info(r[4] + ":" + r[3] + "->" + ports)

        sheet1.write(1+i , 0 , r[0])
        sheet1.write(1 + i, 1, r[1])
        sheet1.write(1 + i, 2, r[2])
        sheet1.write(1 + i, 3, ports)
        sheet1.write(1 + i, 4, r[4])
        sheet1.write(1 + i, 5, r[5])
        sheet1.write(1 + i, 6, r[6])

    gaosan.save("C:/Users/liyang/Desktop/gaosan/re3.xls")



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值