В вашем файле неверные данные UTF-8.Это не имеет ничего общего ни с модулем csv
, ни с размером файла;Ваш файл большего размера содержит недопустимые данные, файл меньшего размера - нет.Просто сделайте:
with open(filename) as f:
f.read()
должно вызвать ту же ошибку, и это просто вопрос обнаружения недопустимого байта UTF-8, который указывает, что ваш файл либо не был UTF-8 для запуска, либо былкаким-то образом поврежден.
Если ваш файл на самом деле имеет другую кодировку (например, latin-1
, cp1252
и т. д .; утилита командной строки file
может помочь с идентификацией, но для многих кодировок ASCII supersetвам просто нужно знать ), передать его в качестве аргумента encoding
в open
, чтобы использовать вместо локали по умолчанию (utf-8
в этом случае), чтобы вы могли правильно декодировать байты,например:
# Also add newline='' to defer newline processing to csv module, where it's part
# of the CSV dialect
with open(filename, encoding='latin-1', newline='') as csvfile:
csvDictReader = csv.DictReader(csvfile, delimiter=',', quotechar='"')
for row in csvDictReader:
print(row)