我的问题是以下代码中的try
语句。我正在从每月数据文件中提取数据,并将它们输出到合并的文件中,以供Power BI读取。
可能出现的问题是,如果工程师打开了统一文件,则尝试写入此文件时会出现权限错误。我的解决方案是尝试5次。如果所有5次失败,则忽略写入文件,他们将需要等到下一次此脚本运行以获取更新的数据时,才应对打开文件的惩罚。
#=================================================================================
# Create the consolidated file that power BI will use
#=================================================================================
def createDashboardFile(self):
outputData = pd.DataFrame(columns=consolidatedHeaders)
rangeStart = datetime.datetime.today() + datetime.timedelta(days=-self.dashboardRange)
months = (datetime.datetime.today().month - rangeStart.month) + 1
for month in range(0,months):
path=self.consolidatedPath + r'\\' + str(rangeStart.year) + str(('00' + str(rangeStart.month))[-2:]) + '.csv'
if os.path.exists(path):
inputData = pd.read_csv(path)
inputData.columns = inputData.columns.str.strip()
inputData['Timestamp']= pd.to_datetime(inputData['Timestamp'])
inScope = inputData['Timestamp'] >= rangeStart
#Remove rows where the date is not in range
inputData = inputData[inScope]
outputData = outputData.append(inputData, ignore_index=True)
rangeStart = rangeStart.replace(day=1)
rangeStart = rangeStart + datetime.timedelta(days=32)
rangeStart = rangeStart.replace(day=1)
tryCount = 0
while tryCount < 5:
try:
with open(self.biFile, 'w') as o:
outputData.to_csv(o, header=True, index=False)
tryCount = 5
except:
tryCount = tryCount =+ 1
if tryCount < 5:
logEvent('BI File Write Error #'+ str(tryCount) + ', ' + os.path.basename(self.biFile), False)
else:
logEvent('BI File Write Failed, ' + os.path.basename(self.biFile), False)
问题在于代码在tryCount = 1
处循环,并将无限循环直到成功写入为止。 try
语句中我做错了什么?或者,为了获得额外的荣誉,是否有更好的方法来尝试尝试写入某人未打开的文件?
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
BI File Write Error #1, Makino.csv
答案 0 :(得分:0)
以下行有错误:
tryCount = tryCount =+ 1
应该是:
tryCount += 1
答案 1 :(得分:0)
tryCount = tryCount =+ 1
实际上是将tryCount
变量设置为1。
您需要执行以下操作:tryCount += 1
答案 2 :(得分:0)
尝试更改
tryCount = 0
while tryCount < 5:
try:
with open(self.biFile, 'w') as o:
outputData.to_csv(o, header=True, index=False)
tryCount = 5
except:
tryCount = tryCount =+ 1
if tryCount < 5:
logEvent('BI File Write Error #'+ str(tryCount) + ', ' + os.path.basename(self.biFile), False)
else:
logEvent('BI File Write Failed, ' + os.path.basename(self.biFile), False)
到
for _ in range(5):
try:
with open(self.biFile, 'w') as o:
outputData.to_csv(o, header=True, index=False)
break
except:
tryCount = tryCount =+ 1
if tryCount < 5:
logEvent('BI File Write Error #'+ str(tryCount) + ', ' + os.path.basename(self.biFile), False)
else:
logEvent('BI File Write Failed, ' + os.path.basename(self.biFile), False)