Особливості соління:
- В основному він призначений для використання для сценарію Python.
- Він використовується для збереження об’єктів python між процесами.
- Він відстежує всі серіалізовані об'єкти, і об'єкт, який серіалізований раніше, не буде серіалізуватися знову.
- Він може прозоро зберігати та відновлювати екземпляр класу.
- Він не безпечний у використанні. Отже, не краще видаляти дані з невідомого джерела.
dump () для серіалізації:
Функція dump () використовується для перетворення даних об'єкта в потік символів перед збереженням у файлі. Ця функція може приймати три аргументи. Перші два аргументи є обов’язковими, а останній - необов’язковим. Перший аргумент бере об’єкт даних, який потрібно серіалізувати. Другий аргумент бере об'єкт обробника файлу цього файлу, де будуть зберігатися складені дані. Останній аргумент приймає ім'я протоколу.
Синтаксис:
дамп (data_object, file_object, [protocol])load () для десеріалізації:
Функція load () використовується для перетворення даних потоку символів з файлу в об'єкт Python. Ця функція містить лише один аргумент, і об'єкт обробника файлу передається як значення аргументу, звідки будуть отримані дані.
Синтаксис:
завантажити (файл_об'єкта)Маринуйте простий об’єкт для зберігання у файлі
Створіть файл з іменем соління1.py з наступним сценарієм python. У наведеному нижче сценарії об'єкт даних з іменем dataObject оголошено для зберігання п’яти назв мов шляхом ітерації циклу for. Далі метод open () використовується для призначення обробника файлу для створення двійкового файлу з іменем мови. звалити () тут використовується функція для серіалізації даних dataObject і зберігайте його в мови файл. Якщо серіалізація буде виконана належним чином, надрукується повідомлення "Дані серіалізуються".
# Імпортуйте модуль розсолуімпортний соління
# Оголосіть об’єкт для зберігання даних
dataObject = []
# 5 разів повторіть цикл for і візьміть імена мов
для n в діапазоні (5):
raw = input ('Введіть назву мови:')
dataObject.додати (сирий)
# Відкрийте файл для запису даних
file_handler = відкрити ('мови', 'wb')
# Звантажити дані об’єкта у файл
соління.дамп (dataObject, file_handler)
# закрийте обробник файлів, щоб звільнити ресурси
file_handler.закрити ()
# Роздрукувати повідомлення
print ('Дані серіалізовані')
Вихід:
Після запуску сценарію для введення буде використано п’ять назв мов.
Видаліть дані з файлу
зняття даних - протилежність засолу даних. Створіть файл з іменем соління2.py з наступним сценарієм python. Ось, відчинено() метод використовується для відкриття двійкового файлу з іменем мови, створений у попередньому прикладі. навантаження () Функція використовується для видалення даних із файлу та збереження їх у змінній dataObject. Далі, для цикл використовується для ітерації даних із dataObject і надрукуйте в терміналі.
# Імпортуйте модуль розсолуімпортний соління
# Відкрийте обробник файлів для читання файлу, звідки будуть завантажуватися дані
file_handler = відкрити ('мови', 'rb')
# Завантажте дані з файлу після десеріалізації
dataObject = маринувати.завантажити (файл_обробник)
# Закрийте обробник файлів
file_handler.закрити ()
# Роздрукувати повідомлення
print ('Дані після десериалізації')
# Повторіть цикл для друку даних після десериалізації
для val в dataObject:
print ('Значення даних:', val)
Вихід:
Наступний результат з’явиться після запуску сценарію.
Маринуйте об’єкт класу у файл
Як можна маринувати об’єкт класу, показано в наступному прикладі. Створіть файл з іменем соління3.py з наступним сценарієм. Ось, Співробітник клас оголошено призначити три значення даних працівника. Далі об’єкт обробника файлу з іменем fileHandler створюється для відкриття файлу для запису. Після ініціалізації об'єкта класу дані серіалізуються за допомогою звалити () функція і зберігається у файлі з іменем Дані працівника. Якщо файл буде створено належним чином, повідомлення, "Дані серіалізовані" надрукує.
# Імпортувати модуль розсолуімпортний соління
# Оголосіть клас працівника для зберігання значення
клас Співробітник:
def __init __ (власне, ім'я, електронна пошта, повідомлення):
себе.name = ім'я
себе.email = електронна пошта
себе.допис = допис
# Створити об'єкт працівника
empObject = Співробітник ('Farheen', '[email protected]', 'Manager')
# Відкрити файл для зберігання даних
fileHandler = відкрити ('workerData', 'wb')
# Збережіть дані у файл
соління.дамп (empObject, fileHandler)
# Закрийте файл
fileHandler.закрити ()
# Роздрукувати повідомлення
print ('Дані серіалізовані')
Вихід:
Наступний результат з’явиться після запуску сценарію.
Видаліть дані до об’єкта класу
Клас з необхідними властивостями та методами вимагатиме декларування для отримання даних із файлу в об’єкт класу. Створіть файл з іменем соління4.py з наступним кодом. Співробітник тут визначено клас для отримання даних. fileObject змінна використовується для відкриття файлу, Дані працівника для читання. Далі, навантаження () Функція використовується для зберігання даних в об'єкті класу після десериалізації. дисплей () функція Співробітник class викликається для друку значень даних об'єкта класу.
# Імпортувати модуль розсолуімпортний соління
# Оголосіть клас працівника для читання та друку даних із файлу
клас Співробітник:
def __init __ (власне, ім'я, електронна пошта, повідомлення):
себе.name = ім'я
себе.email = електронна пошта
себе.допис = допис
показ дисплея (самостійно):
print ('Інформація про працівника:')
print ('Ім'я:', самостійно.ім'я)
print ('Електронна адреса:', самостійно.електронна пошта)
print ('Публікація:', самостійно.пост)
# Відкрийте файл для читання
fileObject = open ('workerData', 'rb')
# Видаліть дані
працівник = соління.завантажити (fileObject)
# Закрити файл
fileObject.закрити ()
#print фрейм даних
працівник.дисплей ()
Вихід:
Наступний результат з’явиться після запуску сценарію.
Висновок
Модуль Pickle - корисна функція python для серіалізації та десериалізації даних. Після завершення прикладів, показаних у цьому посібнику, перенесення даних з одного сценарію python на інший скрипт python буде простішим для будь-кого.