zoukankan      html  css  js  c++  java
  • getLatestFileName.py

    # from DataCleaning.library.functions.getLatestFileName import *
    # getLatestFileName(keyWord, fileNames, sep = "_", comparePath = "")
    from DataCleaning.library.functions.getFileNames import *

    def getLatestFileName(keyWord, fileNames, sep = "_", comparePath = ""):
    tempNames = [f for f in fileNames if keyWord in f]
    numb = 0
    output = 0
    specialKeyWords = ["History order data 2018 April to", "Open OB", "DCG_IBM_In_Transit", "Marathon Price File", "New Buy & Procurement"]
    # [USAGE_IBM, INV_IBM_OOB,INV_IBM_IT ]
    invWeeklyWords = ["Weekly Inventory Details - Canada"]
    invKeyWords = ["Inventory_CPPS", "Inventory_PIMS", "Weekly Physical Inventory_PIMS"]
    SAPKeyWords = ["INV_H023", "H041", "INV_DC", "INV_DC_HS", "USAGE_LENOVO", "INV_DC_OpenPO",
    "Reverse_AFR_QTY_Country", "Reverse_RTV_WIP", "Exchange_Rate", "Moving_Average_Price",
    "MMPP091", "MMPP099", "MD_PN", "POU_In_Transit",
    "DCG_SERVICE_PART_ATTRIBUTES", "Sub_PN_Hard_Flag", "SUB_TO_PLANNING", "Sub_PN_TM_STM", "MD_PO"]
    for i in tempNames:
    if keyWord in invKeyWords:
    tempNum = formatInvDate(i, sep)
    elif keyWord in invWeeklyWords:
    tempNum = formatInvWeeklyDate(i)
    elif keyWord == specialKeyWords[0]:
    tempNum = formatUsageDate(i)
    elif keyWord == specialKeyWords[1]:
    tempNum = formatOOBDate(i)
    elif keyWord == specialKeyWords[2]:
    tempNum = formatITDate(i)
    elif keyWord == specialKeyWords[3]:
    tempNum = formatMarathonPriceDate(i)
    elif keyWord == specialKeyWords[4]:
    tempNum = formatCeMemoNewBuyDate(i)
    elif keyWord in SAPKeyWords:
    tempNum = formatSAPDate(i)
    else:
    tempNum = formatITDate(i)

    tempNum = int(tempNum)
    if tempNum > numb:
    numb = tempNum
    output = i
    if comparePath == "":
    return str(output)
    else:
    currentLatest = getLatestFileName(keyWord, getFileNames(comparePath))
    if output == currentLatest:
    return "ERROR"
    else:
    return output


    # def getFileNames(wd):
    # fileNames = [i for i in os.listdir(wd)
    # if i.endswith(".xlsx") or i.endswith(".XLSX")]# and os.path.isfile(os.getcwd() + '\' + i)]
    # return fileNames

    def formatITDate(fname):
    tempStr = fname.split(".")[0].replace("_", "").replace(" ", "")
    start = 0
    end = len(tempStr)
    state = 0
    for j in range(len(tempStr)):
    if state == 0:
    if tempStr[j].isnumeric():
    start = j
    state = 1
    elif state == 1:
    if not tempStr[j].isnumeric():
    end = j
    state = 2
    else:
    break
    if state == 0:
    return "-1"
    return tempStr[start:end]

    def formatSAPDate(fname, sep = "_"):
    return fname.split(".")[0].split(sep)[-1]

    def formatRegularDate(fname, sep = "_"):
    return fname.split(".")[0].split(sep)[-1][:8]

    # 07162021 -> 20210716
    def formatInvDate(fname, sep = "_"):
    tempString = fname.split(".")[0].split(sep)[-1][:8]
    return tempString[-4:] + tempString[:-4]

    def formatInvWeeklyDate(fname):
    tempString = formatITDate(fname)
    return tempString[-4:] + tempString[:-4]

    import calendar
    month2Num = {name: num for num, name in enumerate(calendar.month_abbr) if num}

    def formatUsageDate(fname):
    if "_" not in fname:
    tempStr = fname.split(".")[0].split("April to")[1].replace(" ", "")
    start = 0
    end = len(tempStr)
    state = 0
    for j in range(len(tempStr)):
    if state == 0:
    if not tempStr[j].isnumeric():
    start = j
    state = 1
    elif state == 1:
    if tempStr[j].isnumeric():
    end = j
    state = 2
    else:
    break
    # mon = datetime.datetime.strptime(tempStr[start:end], "%b")
    year = tempStr[:start]
    mon = ("0" + str(month2Num[tempStr[start:end][:3]]))[-2:]
    day = ("0" + tempStr[end:])[-2:]
    return(year + mon + day)
    else:
    return "-1"

    def formatOOBDate(fname):
    tempList = fname.split(".")
    year = tempList[-2][:4]
    mon = tempList[0][-2:]
    day = tempList[1]
    return year + mon + day


    def formatMarathonPriceDate(fname):
    tempString = fname.split(".")[-2].replace('-', '').replace(" ", '')
    if ')' in tempString:
    tempString = tempString.split(')')[-1]
    output = scanNums(tempString)
    else:
    output = scanNums(tempString, back = True)
    return output

    def formatCeMemoNewBuyDate(fname):
    return fname.split(".")[-2].split(" ")[-1]

    def scanNums(string, start = 0, inputEnd = 0, back = False):
    state = 0
    end = len(string)
    step = 1
    first = 0
    last = len(string)
    if back:
    step = -1
    first = len(string) - 1
    last = -1
    for i in range(first, last, step):
    if state == 0:
    if string[i].isnumeric():
    start = i
    state = 1
    elif state == 1:
    if not string[i].isnumeric():
    end = i
    state = 2
    else:
    break
    if back:
    tempStart = end + 1
    tempEnd = start + 1
    start = tempStart
    end = tempEnd
    if inputEnd != 0:
    end = start + inputEnd
    return int(string[start:end])

    def keepNums(string):
    tempList = []
    for i in range(len(string)):
    if string[i].isnumeric():
    tempList.append(string[i])
    return int(''.join(tempList))
  • 相关阅读:
    php中向mysql插入数据
    W3Cschool菜鸟教程离线版下载链接
    Call to undefined function mysqli_connect()
    Windows下MySQL 5.6安装及配置详细图解
    请不要再责怪你的程序员“太慢”
    工欲善其事必先利其器
    PHP正则表达式
    matlab画柱状图
    matlab 把数组中的NaN去除掉
    建模2017A题 角度lingo代码
  • 原文地址:https://www.cnblogs.com/zhulimin/p/15369469.html
Copyright © 2011-2022 走看看