Python pickle

В языке Python pickle является встроенным модулем, который предоставляет возможности сериализации (записи объектов в файлы) и десериализации (восстановления объектов из файлов). Модуль pickle позволяет сохранять и загружать объекты с сохранением их структуры и состояния.

Методы модуля pickle

  • pickle.dump(obj, file): сериализация объекта в файл.
  • pickle.load(file): десериализация объекта из файла.
  • pickle.dumps(obj): сериализация объекта в байты.
  • pickle.loads(bytes): десериализация объекта из байтов.

Метод pickle.dump(): Сериализация объекта в файл

Метод pickle.dump(obj, file) позволяет сериализовать объект в файл.

Пример использования метода pickle.dump():

import pickle

data = {
    'name': 'John',
    'age': 25,
    'city': 'New York'
}

with open('data.pickle', 'wb') as file:
    pickle.dump(data, file)

В этом примере мы создаем словарь data и сериализуем его в файл data.pickle с помощью метода pickle.dump(). Содержимое словаря будет сохранено в файле в бинарном формате.

Метод pickle.load(): Десериализация объекта из файла

Метод pickle.load(file) позволяет десериализовать объект из файла.

Пример использования метода pickle.load():

import pickle

with open('data.pickle', 'rb') as file:
    data = pickle.load(file)

print(data)

В этом примере мы открываем файл data.pickle с помощью метода open() и десериализуем его содержимое с помощью метода pickle.load(). Результат будет сохранен в переменной data и выведен на экран.

Метод pickle.dumps(obj)

Метод pickle.dumps(obj) из модуля pickle в языке Python используется для сериализации объекта в строку байтов. Он принимает один обязательный параметр:

  • obj: Объект, который нужно сериализовать.

Метод pickle.dumps() возвращает сериализованное представление объекта в виде последовательности байтов.

Пример использования метода pickle.dumps():

import pickle

person = {"name": "John", "age": 30, "city": "New York"}

serialized_person = pickle.dumps(person)
print(serialized_person)
# Вывод: b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00Johnq\x02X\x03\x00\x00\x00ageq\x03K\x1eX\x04\x00\x00\x00cityq\x04X\x08\x00\x00\x00New Yorkq\x05u.'

Метод pickle.loads

Метод pickle.loads из модуля pickle в языке Python используется для десериализации объекта из строки байтов. Он принимает один обязательный параметр:

  • Последовательность байтов, которую нужно десериализовать.

Метод pickle.loads() возвращает десериализованный объект из байтов.

Пример использования метода pickle.loads():

import pickle

serialized_person = b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00Johnq\x02X\x03\x00\x00\x00ageq\x03K\x1eX\x04\x00\x00\x00cityq\x04X\x08\x00\x00\x00New Yorkq\x05u.'

person = pickle.loads(serialized_person)
print(person)
# Вывод: {'name': 'John', 'age': 30, 'city': 'New York'}

Безопасность и скорость сериализации и десериализации

Cледует быть осторожным при использовании pickle для десериализации данных из ненадежных источников, так как это может представлять угрозу безопасности.

Что касается скорости, то pickle является достаточно быстрым модулем для сериализации и десериализации объектов. Однако при работе с большими объемами данных может возникнуть небольшая задержка.