Назад к вопросам
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 |
Файл | Объект | Чтение объекта из файла |