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