回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我的问题是下面代码中的<code>try</code>语句。我从每月数据文件中提取范围内的数据,并将其输出到一个整合文件,以便Power BI读取</p>
<p>可能出现的一个问题是,如果工程师打开了合并文件,我将在尝试写入此文件时遇到权限错误。我的解决办法是尝试5次。如果5次都失败了,忽略写入文件,他们需要等到下一次运行此脚本以获取更新的数据,这是对他们保持打开状态的惩罚</p>
<pre><code>#=================================================================================
# 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)
</code></pre>
<p>问题是代码在<code>tryCount = 1</code>处循环,并将无限循环,直到成功写入。我在<code>try</code>语句中做错了什么?或者,为了获得额外的积分,有没有更好的方法来处理试图写入某人未打开的文件</p>
<pre class="lang-none prettyprint-override"><code>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
</code></pre>