@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Как победить UnicodeDecodeError при чтении файла на pythone?

Есть текстовый файл объемом 1.2 ГБ, есть скрипт на питоне, который читает его построчно.
logFile = open(sys.argv[1], 'r')
count = 0;
for log in logFile:	
	print(count) #номер обрабатываемой строки.
	count += 1
	...

Но при чтении файла на 36934 строке возникает такая ошибка:
File "./parcer.py", line 75, in <module>
    for log in logFile:
  File "/usr/lib/python3.6/codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 867: invalid continuation byte

Как это починить?
Файл большой, и при попытке открыть файл каким либо текстовым редактором редактором он зависает.
работаю под linux'ом
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
with open(sys.argv[1], 'rb') as f:
    for n, L in enumerate(f):
        try:
            print(n, L.decode('utf8', 'ignore'))
        except Exception as e:
            print(n, 'vot blyad', e)
            with open('holy_shit.csv', 'ab') as w:
                w.write(L)
            continue


а это редактор, один из 2-3х, которые МОГУТ
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Midnight commander вам в помощь, открывает не открываемое.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы