все Python 3codecsпонятие
codecs.IncrementalEncoder
инкрементальные кодеки
Базовый класс инкрементальных кодировщиков: encode(text, final=False) кодирует кусок, помня состояние между вызовами; reset() начинает поток заново.
Синтаксис
class MyEncoder(codecs.IncrementalEncoder):
def encode(self, input, final=False): ...
Экземпляры базового класса не работают — encode бросает NotImplementedError; рабочий кодировщик дают getincrementalencoder или lookup(name).incrementalencoder. Состояние здесь — не хвост символа, а то, что уже сказано потоку: BOM записан, сдвиг в ISO-2022 включён. Поэтому один кодировщик нельзя делить между двумя файлами: второй останется без BOM.
Примеры
import codecs
enc = codecs.getincrementalencoder('utf-16-le')()
print(isinstance(enc, codecs.IncrementalEncoder)) # → True
print(enc.encode('ab')) # → b'a\x00b\x00'
try:
codecs.IncrementalEncoder().encode('x')
except NotImplementedError:
print('base class') # → base class
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности