Python Glossary English

все Python 3codecsфункция

codecs.iterencode()

инкрементальные кодеки

Генератор: кодирует поток кусков str в куски bytes инкрементальным кодировщиком — BOM и прочее состояние пишутся один раз на весь поток.

Синтаксис

for data in codecs.iterencode(texts, encoding, errors='strict'): ...

Пишут его, когда текст порождается по частям и целиком в память не помещается. Для UTF-8 это равносильно s.encode() по каждому куску, а для 'utf-16' и 'utf-8-sig' — нет: поштучный encode повторит BOM перед каждым куском. Входом должны быть str; передача bytes даст TypeError, а кодеки base64 и zlib здесь не работают.

Примеры

import codecs
parts = ['id;', 'имя']
print(b''.join(codecs.iterencode(parts, 'utf-8-sig')))  # → b'\xef\xbb\xbfid;\xd0\xb8\xd0\xbc\xd1\x8f'
print(b''.join(p.encode('utf-8-sig') for p in parts).count(codecs.BOM_UTF8))  # → 2

См. также

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