Python Glossary English

все Python 3устарело в 3.14codecsфункция

codecs.open()

потоковые кодеки

Deprecated с 3.14: открывает файл через потоковый кодек codecs. Замена — встроенный open(path, mode, encoding=...), он же io.open.

Синтаксис

codecs.open(filename, mode='r', encoding=None, errors='strict', buffering=-1)

Функция осталась из Python 2, где встроенный open не знал кодировок. Отличия не в её пользу: с заданной кодировкой файл открывается в двоичном режиме, поэтому '\r\n' не превращается в '\n', а вместо io.TextIOWrapper возвращается StreamReaderWriter. В старом коде её меняют на open(path, encoding='utf-8') — и заодно проверяют, не держался ли разбор строк на этом '\r'. С 3.14 вызов выдаёт DeprecationWarning.

Примеры

with open('a.txt', 'w', encoding='utf-8', newline='') as f:
    f.write('a\r\nb\n')
with open('a.txt', encoding='utf-8') as f:
    print(repr(f.read()))  # → 'a\nb\n' — замена: встроенный open
import codecs, warnings
with open('a.txt', 'w', encoding='utf-8', newline='') as f:
    f.write('a\r\nb\n')
warnings.simplefilter('ignore', DeprecationWarning)
with codecs.open('a.txt', encoding='utf-8') as f:
    print(repr(f.read()), type(f).__name__)  # → 'a\r\nb\n' StreamReaderWriter

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности