Ошибка заголовка Python CSV - PullRequest
       11

Ошибка заголовка Python CSV

0 голосов
/ 28 февраля 2010

Попытка чтения заголовков для CSV-файла с помощью:

reader = csv.DictReader(open(PATH_FILE),skipinitialspace=True)
headers = reader.fieldnames

for header in sorted(set(headers)):

Работает на сервере разработки, выдает эту ошибку на производстве

'NoneType' object is not iterable

Отладка показывает, что заголовки имеют значение None, в то время как в файле csv есть заголовки.

headers:None

Ответы [ 2 ]

2 голосов
/ 28 февраля 2010

Из csvreader.fieldnames документации :

Если этот параметр не передан в качестве параметра при создании объекта, этот атрибут инициализируется при первом доступе или при чтении первой записи из файла .

Поэтому попробуйте прочитать первую строку из файла, тогда reader.fieldnames должна содержать необходимые данные. Может быть, что-то вроде добавления reader.next():

reader = csv.DictReader(open(PATH_FILE),skipinitialspace=True)
reader.next()
headers = reader.fieldnames

В документации также сказано:

Изменено в версии 2.6.

Так что это различие в поведении может быть связано с разницей в версии Python между вашими двумя системами.

1 голос
/ 28 февраля 2010

Может быть, вы используете разные версии Python на вашем сервере разработки против производства? В Python 2.5 атрибут fieldnames экземпляра DictReader равен None, пока экземпляр не будет использован для извлечения хотя бы одной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...