while循环未进行到下一个迭代

时间:2020-07-02 15:32:43

标签: python

我的问题是以下代码中的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

3 个答案:

答案 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)