Назад к вопросам
Junior
78
questionbank

В чем отличие между функциями pickle.dumps и pickle.dump, а также pickle.loads и pickle.load?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

pickle.dumps() сериализует объект в байтовую строку, а pickle.dump() сериализует объект в файловый объект (поток). Соответственно, pickle.loads() десериализует байтовую строку обратно в объект, а pickle.load() десериализует объект из файлового объекта (потока).

Примеры:

import pickle

data = {'a': 1, 'b': 2}

# dumps: сериализация в байтовую строку
pickled_string = pickle.dumps(data)
# b'\x80\x04\x95\x11\x00\x00\x00\x00\x00\x00\x00}\x94(X\x01\x00\x00\x00a\x94K\x01X\x01\x00\x00\x00b\x94K\x02u.'

# loads: десериализация из байтовой строки
unpickled_data_from_string = pickle.loads(pickled_string)
# {'a': 1, 'b': 2}

# dump: сериализация в файловый объект
with open('data.pkl', 'wb') as f:
    pickle.dump(data, f) # записывает байты в файл data.pkl

# load: десериализация из файлового объекта
with open('data.pkl', 'rb') as f:
    unpickled_data_from_file = pickle.load(f)
# {'a': 1, 'b': 2}

Суммируя:

Функция Вход Выход Назначение
pickle.dumps Объект Байты Преобразование объекта в байты
pickle.loads Байты Объект Восстановление объекта из байтов
pickle.dump Объект, файл None Запись объекта в файл
pickle.load Файл Объект Чтение объекта из файла