все Python 3pickleпонятие
pickle.Pickler
сериализация
Класс, записывающий объекты в двоичный файл в формате pickle; dump(obj) пишет очередной объект. Позволяет настроить сериализацию.
Синтаксис
p = pickle.Pickler(file, protocol=None, *, fix_imports=True, buffer_callback=None)
pickle.dump() — это Pickler(file).dump(obj) на один раз. Свой Pickler нужен, чтобы записать в поток много объектов или переопределить persistent_id, reducer_override и dispatch_table. Ловушка: Pickler запоминает уже записанные объекты, и если изменить список после dump() и записать его тем же Pickler снова, второй раз уйдёт лишь ссылка на прежнюю копию — изменение потеряется; поможет clear_memo() между записями. Читать результат — Unpickler и только из доверенного источника.
Примеры
import io, pickle
buf = io.BytesIO()
p = pickle.Pickler(buf)
items = [1, 2]
p.dump(items)
items.append(3)
p.dump(items)
buf.seek(0)
u = pickle.Unpickler(buf)
print(u.load(), u.load()) # → [1, 2] [1, 2]
import io, pickle
buf = io.BytesIO()
p = pickle.Pickler(buf)
items = [1, 2]
p.dump(items)
items.append(3)
p.clear_memo()
p.dump(items)
buf.seek(0)
u = pickle.Unpickler(buf)
print(u.load(), u.load()) # → [1, 2] [1, 2, 3]
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности