logo

Розуміння маринування Python на прикладі

У Python нам іноді потрібно зберегти об’єкт на диску для подальшого використання. Це можна зробити за допомогою Pickle Python. У цій статті ми дізнаємося про соління в Python разом із кількома прикладами.

Python Pickle — серіалізація об’єктів Python

Python модуль маринування використовується для серіалізації та десеріалізації структури об’єктів Python. Будь-який об’єкт у Python можна виділити так, щоб його можна було зберегти на диску. Pickle спочатку серіалізує об’єкт перед записом у файл. Піклінг — це спосіб перетворити об’єкт Python (список, словник тощо) у потік символів. Ідея полягає в тому, що цей потік символів містить всю інформацію, необхідну для реконструкції об'єкта в іншому Python сценарій. Він надає можливість перетворювати будь-який об’єкт Python у потік байтів. Цей потік байтів містить усю важливу інформацію про об’єкт, щоб його можна було реконструювати або відновити та повернути до початкової форми на будь-якому Python.



іменування правил java
Picching-In-python-(1)

Робота серіалізації

Приклад Python Pickle

Соління без напилка

У цьому прикладі ми будемо серіалізувати дані словника та зберігати їх у потоці байтів. Потім ці дані десеріалізуються за допомогою pickle.loads() повертається до вихідного об’єкта Python.

Python3






mylivericket



import> pickle> # initializing data to be stored in db> Omkar>=> {>'key'> :>'Omkar'>,>'name'> :>'Omkar Pathak'>,> 'age'> :>21>,>'pay'> :>40000>}> Jagdish>=> {>'key'> :>'Jagdish'>,>'name'> :>'Jagdish Pathak'>,> 'age'> :>50>,>'pay'> :>50000>}> # database> db>=> {}> db[>'Omkar'>]>=> Omkar> db[>'Jagdish'>]>=> Jagdish> # For storing> # type(b) gives ;> b>=> pickle.dumps(db)> # For loading> myEntry>=> pickle.loads(b)> print>(myEntry)>

>

>

Вихід:

подвійний до рядка java
{'Omkar': {'key': 'Omkar', 'name': 'Omkar Pathak', 'age': 21, 'pay': 40000},  'Jagdish': {'key': 'Jagdish', 'name': 'Jagdish Pathak', 'age': 50, 'pay': 50000}}>

Соління напилком

У цьому прикладі ми використаємо файл pickle, щоб спочатку записати в нього дані за допомогою функції pickle.dump(). Потім за допомогою функції pickle.load() ми завантажимо pickle fine у ​​сценарій Python і надрукуємо його дані у формі словника Python.

Python3




# Python3 program to illustrate store> # efficiently using pickle module> # Module translates an in-memory Python object> # into a serialized byte stream—a string of> # bytes that can be written to any file-like object.> import> pickle> def> storeData():> ># initializing data to be stored in db> >Omkar>=> {>'key'> :>'Omkar'>,>'name'> :>'Omkar Pathak'>,> >'age'> :>21>,>'pay'> :>40000>}> >Jagdish>=> {>'key'> :>'Jagdish'>,>'name'> :>'Jagdish Pathak'>,> >'age'> :>50>,>'pay'> :>50000>}> ># database> >db>=> {}> >db[>'Omkar'>]>=> Omkar> >db[>'Jagdish'>]>=> Jagdish> > ># Its important to use binary mode> >dbfile>=> open>(>'examplePickle'>,>'ab'>)> > ># source, destination> >pickle.dump(db, dbfile)> >dbfile.close()> def> loadData():> ># for reading also binary mode is important> >dbfile>=> open>(>'examplePickle'>,>'rb'>)> >db>=> pickle.load(dbfile)> >for> keys>in> db:> >print>(keys,>'=>'>, db[keys])> >dbfile.close()> if> __name__>=>=> '__main__'>:> >storeData()> >loadData()>

перетворення дати в рядок

скільки важить кат тімпф
>

>

Вихід:

Omkar =>{'ключ': 'Омкар', 'ім'я': 'Омкар Патак', 'вік': 21, 'оплата': 40000} Jagdish => {'ключ ': 'Jagdish', 'ім'я': 'Jagdish Pathak', 'вік': 50, 'оплата': 50000}>

Переваги використання Pickle у Python

  1. Рекурсивні об’єкти (об’єкти, що містять посилання на себе): Pickle відстежує об’єкти, які він уже серіалізував, тому пізніші посилання на той самий об’єкт не будуть серіалізовані знову. (Модуль marshal ламається через це.)
  2. Спільне використання об’єктів (посилання на той самий об’єкт у різних місцях): Це схоже на самопосилання на об’єкти. Pickle зберігає об’єкт один раз і гарантує, що всі інші посилання вказують на головну копію. Спільні об’єкти залишаються спільними, що може бути дуже важливим для змінних об’єктів.
  3. Визначені користувачем класи та їх екземпляри: Marshal взагалі не підтримує їх, але Pickle може прозоро зберігати та відновлювати екземпляри класу. Визначення класу має бути імпортованим і знаходитись у тому самому модулі, що й під час зберігання об’єкта.

Недоліки використання Pickle у Python

  1. Залежність від версії Python: Дані picle настільки чутливі до версії Python, яку створено. Окремий об’єкт, створений за допомогою однієї версії Python, який не можна скасувати за допомогою інших версій.
  2. Нечитабельний: Формат pickle є двійковим, і його важко читати чи редагувати людям. Контракти у форматі JSON або XML можна легко змінити.
  3. Велика неефективність даних: Великі набори даних можуть уповільнити травлення та розбирання. Серіалізація може бути більш доречною для таких випадків використання.

Висновок

Хоча Python Pickle пропонує можливості для серіалізації об’єктів, розробники зберігають обмеження, особливо під час роботи з різними версіями Python або роботи з великими наборами даних. Важливо пам’ятати, що завжди враховуйте конкретні потреби вашої програми, щоб визначити, чи підходить для серіалізації ickle або альтернатива, як-от JSON, XML.