Python Glossary English

все Python 3codecsпонятие

codecs.StreamRecoder

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

Перекодирующая обёртка над двоичным потоком: снаружи байты в одной кодировке, внутри — в другой. Обычно создаётся через codecs.EncodedFile.

Синтаксис

codecs.StreamRecoder(stream, encode, decode, Reader, Writer, errors='strict')

Конструктор принимает шесть параметров, и порядок легко перепутать: encode и decode — функции для ВНЕШНЕЙ стороны, Reader и Writer — классы для кодировки файла. Поэтому его почти всегда получают через EncodedFile. И чтение, и запись идут bytes, а не str: текст наружу он не отдаёт никогда.

Примеры

import codecs, io
raw = io.BytesIO('ёж'.encode('cp1251'))
rec = codecs.StreamRecoder(raw, codecs.getencoder('utf-8'), codecs.getdecoder('utf-8'),
                           codecs.getreader('cp1251'), codecs.getwriter('cp1251'))
print(rec.read())  # → b'\xd1\x91\xd0\xb6'
print(type(codecs.EncodedFile(io.BytesIO(), 'utf-8')).__name__)  # → StreamRecoder

См. также

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