【发布时间】:2018-11-04 15:48:06
【问题描述】:
我有一段代码已经成功使用了一段时间。其中有一段循环遍历一小部分员工,并将他们的前 20 种产品中的每一种都写入 Excel 表。现在它经常(但不总是)抛出错误:(完整的回溯见下文)
PermissionError:[Errno 13] 权限被拒绝:
即,如果您在运行代码时不小心打开了电子表格,则会出现错误。现在情况并非如此。以下是相关代码:
for e in employee_list:
df4 = e
df4 = pd.DataFrame()
df4 = df4.append(df3.loc[df3['Employee'] == e], sort = False)
book = load_workbook(filename)
sheet = e + '_qtr'
writer = pd.ExcelWriter(filename, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df4.to_excel (writer, sheet)
writer.save()
我的一个想法可能是代码现在运行得更快了?在此错误开始发生之前,我对代码进行了一些小改动,以简化它。当循环回来时,OpenPyXL 是否仍在努力保存?
感谢任何帮助!
完整的追溯:
Traceback (most recent call last):
File "scorecard_3.py", line 390, in <module>
sc_attrib(f, p)
File "scorecard_3.py", line 367, in sc_attrib
writer.save()
File "C:\Users\arbit\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\io\excel.py", line 1018, in save
return self.book.save(self.path)
File "C:\Users\arbit\AppData\Local\Programs\Python\Python36-32\lib\site-packages\openpyxl\workbook\workbook.py", line 367, in save
save_workbook(self, filename)
File "C:\Users\arbit\AppData\Local\Programs\Python\Python36-32\lib\site-packages\openpyxl\writer\excel.py", line 282, in save_workbook
archive = ZipFile(filename, 'w', ZIP_DEFLATED, allowZip64=True)
File "C:\Users\arbit\AppData\Local\Programs\Python\Python36-32\lib\zipfile.py", line 1090, in __init__
self.fp = io.open(file, filemode)
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\arbit\\OneDrive\\Documents\\Scorecard 3.0.xlsx'
【问题讨论】:
-
包括完整的回溯,但我怀疑您没有加载工作簿的权限。
-
它将打开电子表格并发布一些数据,在循环期间的某个时刻给出错误。不是第一个循环,也不是任何给定的循环。
-
正如我所说,当您尝试保存文件时会出现问题。
标签: python excel pandas openpyxl