ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

getLatestFileName.py

2021-10-05 20:35:54  阅读:156  来源: 互联网

标签:return py start state tempStr fname getLatestFileName end


# 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))

标签:return,py,start,state,tempStr,fname,getLatestFileName,end
来源: https://www.cnblogs.com/zhulimin/p/15369469.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有