Почему я получаю 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' перед путями к файлам, поскольку это означает, что интерпретатор будет игнорировать специальные символы, такие как \$.