2016-03-13 4 views
0

Я использую Python 2.7.11 на Ubuntu.Python: объект «NoneType» не имеет атрибута «decpressobj»

Я пытаюсь открыть файл Excel (.xlsx) в Python с помощью пакета xlrd. Однако я получаю следующее сообщение об ошибке при попытке использовать функцию open_workbook() из пакета, чтобы открыть свой файл Excel:

Traceback (most recent call last): 

    File "TileInserter.py", line 15, in <module> 
     book = open_workbook(sheetPath, on_demand=True) 

    File "/usr/local/lib/python2.7/site-packages/xlrd/__init__.py", line 422, in open_workbook 
     ragged_rows=ragged_rows, 

    File "/usr/local/lib/python2.7/site-packages/xlrd/xlsx.py", line 761, in open_workbook_2007_xml 
     zflo = zf.open(component_names['xl/_rels/workbook.xml.rels']) 

    File "/usr/local/lib/python2.7/zipfile.py", line 1010, in open 
     close_fileobj=should_close) 

    File "/usr/local/lib/python2.7/zipfile.py", line 526, in __init__ 
     self._decompressor = zlib.decompressobj(-15) 

AttributeError: 'NoneType' object has no attribute 'decompressobj' 

Я пытался Google причины этой ошибки и обнаружил, что это может произойти, если zlib библиотеки не установлен. Но когда я проверил использование функции PHP phpinfo(), она показывает, что установлен zlib. И это тоже самая последняя версия (версия 1.2.8).

Так что я сейчас застрял. Кто-нибудь знает, как решить эту проблему?

EDIT: Мой реальный код в TileInserter.py идет как это (TileInserter.py и TileList.xlsx быть в том же каталоге):

from xlrd import open_workbook 

sheetPath = "TileList.xlsx" 
#some more variables 

#Open Excel file 
book = open_workbook(sheetPath, on_demand=True) 
for name in book.sheet_names(): 
    if name.endswith('1'): 
     sheet = book.sheet_by_name(name) 
+0

Пожалуйста, сообщите свой код –

ответ

1

я вижу на http://www.python-excel.org/, что есть библиотека openpyxl, которая рекомендуется для работы с .xlsx файлов. Это может быть то, что вам нужно, а не xlrd.

+0

Ну, я попытался открыть документ '.xls' вместо' .xlsx', и он открылся без проблем. Поэтому спасибо, что указали это! Но в соответствии с этой нитью [здесь] (http://stackoverflow.com/questions/4371163/reading-xlsx-files-using-python) поддержка '.xlsx' была добавлена ​​в' xlrd' около 6 лет назад, а я используя последнюю версию (0.9.4 на данный момент). – masquerade817

+0

Так что спасибо, что указали это. Я одобрил ваш ответ, так как он решает мою проблему, но я буду ждать ответа, который на самом деле отвечает на вопрос, чтобы дать галочку. – masquerade817

 Смежные вопросы

  • Нет связанных вопросов^_^