Pickle, который по умолчанию является частью библиотеки Python, является важным модулем, когда вам требуется постоянство между сеансами пользователя. Как модуль, pickle обеспечивает сохранение объектов Python между процессами.
Если вы программируете для база данныхИгра, форум или другое приложение, которое должно сохранять информацию между сессиями, pickle полезно для сохранения идентификаторов и настроек. Модуль pickle может хранить такие вещи, как типы данных, такие как логические значения, строки и байтовые массивы, списки, словари, функции и многое другое.
Замечания: Концепция травления также известна как сериализация, маршалинг и сплющивание. Однако суть всегда одна и та же - сохранить объект в файл для последующего извлечения. Pickling выполняет это, записывая объект в виде одного длинного потока байтов.
Пример кода Pickle в Python
Чтобы записать объект в файл, вы используете код в следующем синтаксисе:
импортный рассол
object = Object ()
filehandler = open (имя файла, 'w')
pickle.dump (объект, обработчик файлов)
Вот как выглядит пример из реальной жизни:
импортный рассол
импорт математики
object_pi = math.pi
file_pi = open ('filename_pi.obj', 'w')
pickle.dump (object_pi, file_pi)
Этот фрагмент записывает содержимое object_pi в файл обработчик file_piкоторый в свою очередь привязан к файлу filename_pi.obj в каталоге исполнения.
Чтобы восстановить значение объекта в памяти, загрузите объект из файла. Предполагая, что маринад еще не был импортирован для использования, начните с его импорта:
импортный рассол
filehandler = open (имя файла, 'r')
object = pickle.load (обработчик файлов)
Следующий код восстанавливает значение pi:
импортный рассол
file_pi2 = open ('filename_pi.obj', 'r')
object_pi2 = pickle.load (file_pi2)
Затем объект снова готов к использованию, на этот раз как object_pi2. Вы можете, конечно, повторно использовать оригинальные имена, если вы предпочитаете. Этот пример использует разные имена для ясности.
Что следует помнить о рассоле
Помните эти вещи при использовании модуля pickle:
- Протокол pickle специфичен для Python - он не гарантирует совместимость между языками. Скорее всего, вы не можете передать информацию, чтобы сделать ее полезной на Perl, PHP, Java или других языках.
- Также нет гарантии совместимости между различными версиями Python. Это несовместимость существует, потому что не каждая структура данных Python может быть сериализована модулем.
- По умолчанию используется последняя версия протокола Pickle. Это остается так, если вы не измените его вручную.
Чаевые: Также узнайте Как использовать полки для сохранения объектов в Python для другого метода поддержания непрерывности объекта.