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