Как мариновать объекты в Python

How Pickle Objects Python



Любые данные можно сериализовать и десериализовать в Python с помощью модуля JSON и Pickle. Перед сохранением каких-либо данных в файле объекты Python сериализуются с помощью модуля pickle. С помощью этого модуля объекты Python преобразуются в потоки символов. Когда пользователь хочет получить данные файла для использования другого скрипта Python, данные файла десериализуются модулем pickle. В этом руководстве описаны особенности модуля pickle и то, как этот модуль можно использовать в скрипте Python для сериализации и десериализации.

Особенности рассола:

  • Он в основном предназначен для использования в сценариях Python.
  • Он используется для сохранения объектов Python между процессами.
  • Он отслеживает все сериализованные объекты, и объект, который был сериализован ранее, не будет снова сериализован.
  • Он может прозрачно сохранять и восстанавливать экземпляр класса.
  • Это небезопасно в использовании. Так что извлекать данные из неизвестного источника не лучше.

dump () для сериализации:

Функция dump () используется для преобразования данных объекта в поток символов перед сохранением в файл. Эта функция может принимать три аргумента. Первые два аргумента являются обязательными, а последний аргумент - необязательным. Первый аргумент принимает объект данных, который необходимо сериализовать. Второй аргумент принимает объект-обработчик файла того файла, в котором будут храниться упакованные данные. Последний аргумент принимает имя протокола.







Синтаксис:



свалка(data_object,file_object, [протокол])

load () для десериализации:

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



Синтаксис:





нагрузка(file_object)

Выберите простой объект для хранения в файле

Создайте файл с именем pickle1.py со следующим скриптом Python. В следующем скрипте объект данных с именем dataObject объявлен для хранения пяти названий языков путем повторения цикла for. Затем метод open () используется для назначения обработчика файла для создания двоичного файла с именем языков. свалка() функция используется здесь для сериализации данных dataObject и сохраните его в языки файл. Если сериализация будет выполнена правильно, будет напечатано сообщение «Данные сериализованы».

# Импортируем модуль рассола
Импортировать соленый огурец

# Объявить объект для хранения данных
dataObjectзнак равно []

# Повторяем цикл for 5 раз и берем названия языков
дляпв диапазон(5):
сыройзнак равно Вход('Введите название языка:')

dataObject.добавить(сырой)

# Открываем файл для записи данных
file_handlerзнак равно открытым('языки', 'wb')

# Выгрузить данные объекта в файл
соленый огурец.свалка(dataObject,file_handler)

# закройте обработчик файлов, чтобы освободить ресурсы
file_handler.близко()

# Распечатать сообщение
Распечатать('Данные сериализованы')

Выход:



После запуска скрипта он примет в качестве входных данных пять названий языков.

Извлечь данные из файла

распаковка данных противоположна травлению данных. Создайте файл с именем pickle2.py со следующим скриптом Python. Здесь, открытым() используется для открытия двоичного файла с именем языки , созданный в предыдущем примере. нагрузка() функция используется для извлечения данных из файла и сохранения их в переменной dataObject . Следующий, для цикл используется для итерации данных из dataObject и распечатайте в терминале.

# Импортируем модуль рассола
Импортировать соленый огурец

# Открываем обработчик файлов для чтения файла, откуда будут загружаться данные
file_handlerзнак равно открытым('языки', 'rb')

# Загружаем данные из файла после десериализации
dataObjectзнак равно соленый огурец.нагрузка(file_handler)

# Закрываем обработчик файлов
file_handler.близко()

# Распечатать сообщение
Распечатать('Данные после десериализации')

# Итерируем цикл для печати данных после десериализации
длячасывdataObject:
Распечатать('Значение данных:',часы)

Выход:

Следующий вывод появится после запуска скрипта.

Привязать объект класса к файлу

Как можно мариновать объект класса, показано в следующем примере. Создайте файл с именем pickle3.py со следующим сценарием. Здесь, Работник объявлен класс для присвоения трех значений данных сотрудника. Затем объект-обработчик файлов с именем fileHandler создается, чтобы открыть файл для записи. После инициализации объекта класса данные сериализуются с использованием свалка() функция и хранится в файле с именем employeeData . Если файл будет создан правильно, появится сообщение, Данные сериализованы напечатает.

# Импортировать модуль рассола
Импортировать соленый огурец

# Объявить класс сотрудника для хранения значения
классРаботник:
def __в этом__(себя,имя, Эл. адрес,Почта):
себя.имя знак равноимя
себя.Эл. адрес знак равно Эл. адрес
себя.Почта знак равноПочта

# Создать объект сотрудника
empObjectзнак равноРаботник('Фархин', '[электронная почта защищена]', 'Менеджер')

# Открыть файл для хранения данных
fileHandlerзнак равно открытым('employeeData', 'wb')

# Сохраняем данные в файл
соленый огурец.свалка(empObject,fileHandler)

# Закройте файл
fileHandler.близко()

# Распечатать сообщение
Распечатать('Данные сериализованы')

Выход:

Следующий вывод появится после запуска скрипта.

Распаковка данных в объект класса

Класс с необходимыми свойствами и методами потребует объявления для извлечения данных из файла в объект класса. Создайте файл с именем pickle4.py со следующим кодом. Работник Здесь определяется класс для извлечения данных. fileObject переменная используется для открытия файла, employeeData для чтения. Следующий, нагрузка() функция используется для хранения данных в объекте класса после десериализации. отображать() функция Работник class вызывается для печати значений данных объекта класса.

# Импортировать модуль рассола
Импортировать соленый огурец

# Объявить класс сотрудника для чтения и печати данных из файла
классРаботник:
def __в этом__(себя,имя, Эл. адрес,Почта):
себя.имя знак равноимя
себя.Эл. адрес знак равно Эл. адрес
себя.Почта знак равноПочта

defотображать(себя):
Распечатать('Информация о сотруднике:')
Распечатать('Имя :', себя.имя)
Распечатать('Эл. адрес :', себя.Эл. адрес)
Распечатать('Почта :', себя.Почта)

# Открываем файл для чтения
fileObjectзнак равно открытым('employeeData', 'rb')

# Распаковываем данные
работникзнак равно соленый огурец.нагрузка(fileObject)

# Закрыть файл
fileObject.близко()

# распечатать фрейм данных
работник.отображать()

Выход:

Следующий вывод появится после запуска скрипта.

Заключение

Модуль Pickle - полезная функция Python для сериализации и десериализации данных. После выполнения примеров, показанных в этом руководстве, перенос данных из одного скрипта Python в другой скрипт Python станет проще для всех.