Python Glossary English

все 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Сообщить о неточности