Особенности рассола:
- Он в основном предназначен для использования в сценариях 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 станет проще для всех.