все Python 3Файлы и I/Oпонятие
errors=
параметры open()
Параметр open(), определяющий реакцию на ошибки кодировки: 'strict' (по умолчанию, исключение), 'ignore', 'replace', 'backslashreplace'.
Синтаксис
open(file, encoding='utf-8', errors='strict')
'ignore' и 'replace' не чинят файл, а молча теряют данные: байты либо исчезают, либо превращаются в U+FFFD, и восстановить оригинал уже нельзя — сначала стоит выяснить настоящую кодировку. Если задача «прочитать, поправить, записать обратно», берите errors='surrogateescape': только он даёт точный round-trip непонятных байтов. В бинарном режиме параметр запрещён — там нечего декодировать.
Примеры
with open('broken.txt', 'wb') as f:
f.write('привет'.encode('utf-8') + b'\xff')
# игнорировать некорректные байты
with open('broken.txt', encoding='utf-8', errors='ignore') as f:
print(f.read()) # → привет
# заменить их символом-заменителем
with open('broken.txt', encoding='utf-8', errors='replace') as f:
print(f.read()) # → привет� — символ-заменитель
with open('broken.txt', encoding='utf-8') as f:
f.read() # → UnicodeDecodeError: по умолчанию errors='strict'
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности