Почему я получаю KeyError за попытку открыть книгу Excel с помощью xlrd

Я пытаюсь перебрать папку электронных таблиц Excel и открыть их для извлечения данных и отправки в базу данных. До сих пор я получаю сообщение об ошибке при попытке использовать xlrd.open_workbook. Я пытаюсь понять, что такое ключевая ошибка и почему я ее получаю. Также некоторые способы, чтобы пройти через это желательно.

import xlrd as rd

book= 
rd.open_workbook("C:/Users/me/Desktop/PythonSpyderDesktop/Extract/Bob 
Trucking & Warehouse, LLC.xlsm")

Я также пытался:

path = "C:\\Users\\me\\Desktop\\PythonSpyderDesktop\\Extract\\"
book= 
rd.open_workbook(os.path.join(path,'Bob 
Trucking & Warehouse, LLC.xlsm'))

Это моя ошибка: трассировка (последний последний вызов):

File "<ipython-input-99-682ed177f4f5>", line 1, in <module>
book= rd.open_workbook("C:/Users/me/Desktop/PythonSpyderDesktop/Extract/Bob 
Trucking & Warehouse, LLC.xlsm")

File "C:\Python3\WPy-3670\python-3.6.7.amd64\lib\site- 
packages\xlrd\__init__.py", line 143, in open_workbook
ragged_rows=ragged_rows,

File "C:\Python3\WPy-3670\python-3.6.7.amd64\lib\site- 
packages\xlrd\xlsx.py", line 808, in open_workbook_2007_xml
x12book.process_stream(zflo, 'Workbook')

File "C:\Python3\WPy-3670\python-3.6.7.amd64\lib\site- 
packages\xlrd\xlsx.py", 
line 265, in process_stream
meth(self, elem)

File "C:\Python3\WPy-3670\python-3.6.7.amd64\lib\site- 
packages\xlrd\xlsx.py", line 374, in do_sheet
reltype = self.relid2reltype[rid]

KeyError: ''

Если бы я мог получить больше понимания ключевой ошибки, это было бы потрясающе. Я знаю, что это связано с объектом словаря, но я программировал на python в течение 2 дней, так что я все еще постигаю основы. Что означает ключевая ошибка и как ее исправить?

Спасибо!

1 ответ

Ваш первый фрагмент кода, кажется, будет работать нормально, если вы разберетесь со строками кода.

import xlrd as rd

book= rd.open_workbook(r'C:/Users/me/Desktop/PythonSpyderDesktop/Extract/Bob Trucking & Warehouse, LLC.xlsm')

Программа запуталась и подумала, что имя файла заканчивается на

/Extract/Bob 

и вторая началась в

Trucking & Warehouse, LLC.xlsm")

Это означает, что вы ожидаете, что вы будете использовать два набора кавычек для обозначения двух разных строк. Вы также можете поставить 'r' перед путями к файлам, поскольку это означает, что интерпретатор будет игнорировать специальные символы, такие как \$.

Другие вопросы по тегам