По всем вопросам- @workakkk
@itchannels_telegram - 🔥лучшие ит-каналы
@ai_machinelearning_big_data - Machine learning
@pythonl - Python
@pythonlbooks- python книги📚
@datascienceiot - ml книги📚
РКН: https://vk.cc/cIi9vo
#VRHSZ
Post #822
5.37K

«Консервируем» данные: модули pickle и dill
Сериализация данных – это преобразование данных, обрабатываемых в программе (структур и объектов) в форматы, которые можно хранить и передавать.
Задача состоит в том, чтобы можно было в дальнейшем воссоздать точную копию сохранённых данных, не утратив какую-либо информацию. В python есть разнообразные способы сделать это, некоторые их которых я и приведу в этом посте.
Сериализация данных с помощью pickle
Рассмотрю для начала стандартную библиотеку pickle. Библиотека работает с двоичными потоками данных, как в файл, так и по сети. Открыв один поток можно последовательно добавлять в него данные, при этом повторное добавление данных не приводит к их задвоению в итоговом файле, так как модуль pickle хранит историю.
В общем случае, сохранение и загрузка с использованием модуля pickle выглядит так:
Pickle позволяет сериализовать большое количество разнообразных объектов, используемых в python. Можно даже выполнять сериализацию пользовательских классов и функций, с тем нюансом что код функций или классов не сериализуется, а сериализуются только конкретные объекты и ссылки на функции. Это значит, что для успешного распаковывания объектов требуется исходный код.
Примечательно, что библиотека позволяет исполнять программный код при десериализации данных. Функционал библиотеки позволяет добавить в класс методы getstate, setstate, и reduce, который описывает поведение объекта при сериализации/десериализации. Поэтому очень важно знать, что в файле не содержится вредоносного кода. С другой стороны, это может быть удобным подспорьем если требуется, например, напомнить себе о том на каком этапе находилась обработка перед сохранением объекта.
Выглядит это следующим образом:
Смотреть
Сериализация данных – это преобразование данных, обрабатываемых в программе (структур и объектов) в форматы, которые можно хранить и передавать.
Задача состоит в том, чтобы можно было в дальнейшем воссоздать точную копию сохранённых данных, не утратив какую-либо информацию. В python есть разнообразные способы сделать это, некоторые их которых я и приведу в этом посте.
Сериализация данных с помощью pickle
Рассмотрю для начала стандартную библиотеку pickle. Библиотека работает с двоичными потоками данных, как в файл, так и по сети. Открыв один поток можно последовательно добавлять в него данные, при этом повторное добавление данных не приводит к их задвоению в итоговом файле, так как модуль pickle хранит историю.
В общем случае, сохранение и загрузка с использованием модуля pickle выглядит так:
import pickle
with open('pickle_dump_ex', 'wb') as output_file:
pickle.dump(data_to_save, output_file)
with open('pickle_dump_ex', 'rb') as input_file:
data_to_load = pickle.load(input _file)Pickle позволяет сериализовать большое количество разнообразных объектов, используемых в python. Можно даже выполнять сериализацию пользовательских классов и функций, с тем нюансом что код функций или классов не сериализуется, а сериализуются только конкретные объекты и ссылки на функции. Это значит, что для успешного распаковывания объектов требуется исходный код.
Примечательно, что библиотека позволяет исполнять программный код при десериализации данных. Функционал библиотеки позволяет добавить в класс методы getstate, setstate, и reduce, который описывает поведение объекта при сериализации/десериализации. Поэтому очень важно знать, что в файле не содержится вредоносного кода. С другой стороны, это может быть удобным подспорьем если требуется, например, напомнить себе о том на каком этапе находилась обработка перед сохранением объекта.
Выглядит это следующим образом:
Смотреть
- 👍 8
- ❤ 4
- 🔥 1











