簡體   English   中英

with 語句 python __enter__ 屬性錯誤

[英]with statement python __enter__ attribute error

這個:

def add_to_excel(list_to_save, file_to_save_in):

my_file = dir_path + '\\' + file_to_save_in
with openpyxl.load_workbook(filename=my_file) as links_excel:
    sheet = links_excel['Sheet1']
    for i in list_to_save:
        sheet.append(i)
    links_excel.save(filename)
    return

返回這個:

      3     my_file = dir_path + '\\' + file_to_save_in
----> 4     with openpyxl.load_workbook(filename=my_file) as links_excel:
      5         sheet = links_excel['Sheet1']
      6         for i in list_to_save:

AttributeError: __enter__

試過這個:

您沒有使用 with 語句並且沒有 close() 語句,因此如果這不是您第一次運行代碼,則很可能您沒有正確關閉文件並且它仍然位於 memory 中並阻止使用權。

編輯:

顯然關閉 excel 修復它

links_excel.close()

來自openpyxl 文檔

閱讀現有工作簿:

from openpyxl import load_workbook
wb = load_workbook(filename = 'empty_book.xlsx')
sheet_ranges = wb['range names']
print(sheet_ranges['D18'].value)

這是一個關於如何使用load_workbook方法的示例,因此您不需要使用 with 語句。 只需使用分配。

def add_to_excel(list_to_save, file_to_save_in):
    
    my_file = dir_path + '\\' + file_to_save_in
    links_excel = openpyxl.load_workbook(filename=my_file) 
    sheet = links_excel['Sheet1']
    for i in list_to_save:
        sheet.append(i)
    links_excel.save(filename)
    links_excel.close()
    return

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM