Сообщить об ошибке.

Функции dump() и dumps() модуля pickle в Python

Упаковка объектов Python в файл

Синтаксис:

import pickle

pickle.dump(obj, file, protocol=None, *, \
            fix_imports=True, buffer_callback=None)

pickle.dumps(obj, protocol=None, *, \
             fix_imports=True, buffer_callback=None)

Параметры:

  • obj - объект Python, подлежащий сериализации,
  • file - файловый объект,
  • protocol=None - протокол сериализации
  • fix_imports=True - сопоставление данных Python2 и Python3,
  • buffer_callback=None - сериализация буфера в файл как часть потока pickle.

Возвращаемое значение:

Описание:

Функция pickle.dump() модуля pickle записывает сериализованное представление объекта obj в открытый файловый объект. Это эквивалентно вызову pickle.Pickler(file, protocol).dump(obj).

Функция pickle.dumps() возвращает выбранное представление объекта obj как объекта байтов вместо записи его в файл.

Подробное описание аргументов file, protocol, fix_imports и buffer_callback имеют то же значение, что и в конструкторе pickle.Pickler().

Примеры использования:

import pickle

class Test():
    emp_count = 0  
  
    def __init__(self, name, bonus):  
        self.name = name  
        self.bonus = bonus  
        Test.emp_count += 1  
  
    def count(self):  
        print(f'Всего: {Test.emp_count}') 
  
    def emp(self):  
        print(f'Имя: {self.name}. Бонус: {self.bonus}')

>>> emp1 = Test('Mike', 100)
>>> emp2 = Test('Bob', 300)
>>> emp1.age = 7
>>> data = {'emp1': emp1, 'emp2': emp2}

# cохраняем состояние emp1 и emp2
>>> with open('data.pkl', 'wb') as fp:
...     pickle.dump(data, fp)

# восстанавливаем состояние emp1 и emp2
>>> with open('data.pkl', 'rb') as fp:
...     x = pickle.load(fp)

>>> foo1 = x['emp1']
>>> foo1.emp()
# Имя: Mike. Бонус: 100
>>> foo1.age
7
>>> foo1.count()
# Всего: 2
>>> foo2 = x['emp2']
>>> foo2.emp()
# Имя: Bob. Бонус: 300