Openpyxl: «разрешение запрещено», но лист Excel не открыт - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть кусок кода, который я успешно использовал в течение долгого времени. Есть фрагмент, который просматривает небольшой список сотрудников и записывает каждый из 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'

1 Ответ

0 голосов
/ 04 ноября 2018

Я понял это. Microsoft Onedrive пытался загрузить файл в облако, пока я работал с ним. Я изменил эти настройки, и теперь он отлично работает!

...