Cum să murăm obiecte în Python

How Pickle Objects Python



Orice date pot fi serializate și deserializate în Python utilizând modulul JSON și Pickle. Înainte de a stoca orice date într-un fișier, obiectele Python sunt serializate folosind modulul pickle. Obiectele Python sunt convertite în fluxuri de caractere utilizând acest modul. Atunci când utilizatorul dorește să recupereze datele fișierului pentru a utiliza un alt script python, atunci datele fișierului sunt deserializate prin modulul pickle. Caracteristicile modulului pickle și modul în care acest modul poate fi utilizat în scriptul Python pentru serializare și deserializare sunt descrise în acest tutorial.

Caracteristici murături:

  • Este conceput în principal pentru a fi folosit pentru scriptul Python.
  • Este folosit pentru salvarea obiectelor python între procese.
  • Acesta ține evidența tuturor obiectelor serializate, iar obiectul care este serializat înainte nu va mai fi serializat.
  • Poate salva și restaura instanța clasei în mod transparent.
  • Nu este sigur de utilizat. Deci, nu este mai bine să scoateți datele dintr-o sursă necunoscută.

dump () pentru serializare:

funcția dump () este utilizată pentru a converti datele obiectului într-un flux de caractere înainte de a le salva într-un fișier. Această funcție poate lua trei argumente. Primele două argumente sunt obligatorii, iar ultimul argument este opțional. Primul argument ia un obiect de date care trebuie serializat. Al doilea argument ia obiectul de gestionare a fișierelor din acel fișier în care datele stocate vor fi stocate. Ultimul argument ia numele protocolului.







Sintaxă:



dump(data_object,file_object, [protocol])

load () pentru deserializare:

funcția load () este utilizată pentru a converti datele fluxului de caractere din fișier într-un obiect Python. Această funcție conține un singur argument, iar obiectul de gestionare a fișierelor din fișier trece ca valoare a argumentului de unde vor fi preluate datele.



Sintaxă:





sarcină(file_object)

Pickle un obiect simplu de stocat într-un fișier

Creați un fișier numit pickle1.py cu următorul script python. În scriptul următor, un obiect de date numit dataObject este declarat să stocheze cinci nume de limbi iterând bucla for. Apoi, metoda open () este utilizată pentru a atribui un handler de fișiere pentru crearea unui fișier binar numit limbi. dump () funcția este utilizată aici pentru a serializa datele de dataObject și păstrați-l în limbi fişier. Dacă serializarea se va face corect atunci se va imprima un mesaj, Data este serializată.

# Importați modulul de murături
import murături

# Declarați obiectul pentru stocarea datelor
dataObject= []

# Iterează bucla for de 5 ori și ia nume de limbi
pentrunîn gamă(5):
brut= intrare(„Introduceți un nume de limbă:”)

dataObject.adăuga(brut)

# Deschideți un fișier pentru scrierea datelor
manipulator_fișier= deschis(„limbi”, „wb”)

# Aruncați datele obiectului în fișier
murături.dump(dataObject,manipulator_fișier)

# închideți gestionarul de fișiere pentru a elibera resursele
manipulator_fișier.închide()

# Imprimați mesajul
imprimare(„Datele sunt serializate”)

Ieșire:



După rularea scriptului, vor fi introduse cinci nume de limbi.

Desfaceți datele dintr-un fișier

dezlipirea datelor este opusul datelor de decapare. Creați un fișier numit pickle2.py cu următorul script python. Aici, deschis() metoda este utilizată pentru a deschide fișierul binar numit limbi , creat în exemplul anterior. sarcină() funcția este utilizată pentru a dezactiva datele din fișier și a le stoca în variabilă dataObject . Următorul, pentru se utilizează bucla iterați datele din dataObject și tipăriți în terminal.

# Importați modulul de murături
import murături

# Deschideți un handler de fișiere pentru citirea unui fișier de unde se vor încărca datele
manipulator_fișier= deschis(„limbi”, „rb”)

# Încărcați datele din fișier după deserializare
dataObject= murături.sarcină(manipulator_fișier)

# Închideți gestionarul de fișiere
manipulator_fișier.închide()

# Imprimați mesajul
imprimare(„Date după deserializare”)

# Iterează bucla pentru a imprima datele după deserializare
pentruoreîndataObject:
imprimare(„Valoarea datelor:”,ore)

Ieșire:

Următoarea ieșire va apărea după rularea scriptului.

Pickle un obiect de clasă într-un fișier

Modul în care un obiect de clasă poate fi murat este prezentat în exemplul următor. Creați un fișier numit pickle3.py cu următorul script. Aici, Angajat clasa este declarată pentru a atribui trei valori de date unui angajat. Apoi, un obiect de gestionare a fișierelor numit fileHandler este creat pentru a deschide un fișier pentru scriere. După inițializarea obiectului clasei, datele sunt serializate folosind dump () funcție și stocate în fișierul numit dataData angajat . Dacă fișierul se va crea corect, atunci mesajul, Datele sunt serializate va imprima.

# Importați modulul murat
import murături

# Declarați clasa angajaților pentru a stoca valoarea
clasăAngajat:
def __init__(de sine,Nume, e-mail,post):
de sine.Nume =Nume
de sine.e-mail = e-mail
de sine.post =post

#Creați obiectul angajatului
empObject=Angajat(„Farheen”, „[email protected]”, 'Administrator')

# Deschideți fișierul pentru datele din magazin
fileHandler= deschis(„angajatDate”, „wb”)

# Salvați datele în fișier
murături.dump(empObject,fileHandler)

# Închideți fișierul
fileHandler.închide()

# Imprimați mesajul
imprimare(„Datele sunt serializate”)

Ieșire:

Următoarea ieșire va apărea după rularea scriptului.

Desfaceți datele într-un obiect de clasă

O clasă cu proprietățile și metodele necesare va trebui să declare pentru recuperarea datelor dintr-un fișier într-un obiect de clasă. Creați un fișier numit pickle4.py cu următorul cod. Angajat clasa este definită aici pentru a prelua datele. fileObject variabila este utilizată pentru a deschide fișierul, dataData angajat pentru citit. Următorul, sarcină() funcția este utilizată pentru a stoca datele în obiectul clasei după deserializare. afişa() funcția Angajat clasa este apelată pentru a imprima valorile de date ale obiectului clasei.

# Importați modulul murat
import murături

# Declarați clasa angajaților să citească și să imprime date dintr-un fișier
clasăAngajat:
def __init__(de sine,Nume, e-mail,post):
de sine.Nume =Nume
de sine.e-mail = e-mail
de sine.post =post

defafişa(de sine):
imprimare(„Informații pentru angajați:”)
imprimare('Nume :', de sine.Nume)
imprimare('E-mail :', de sine.e-mail)
imprimare('Post :', de sine.post)

# Deschideți fișierul pentru citire
fileObject= deschis(„angajatDate”, „rb”)

# Desfaceți datele
angajat= murături.sarcină(fileObject)

# Închideți fișierul
fileObject.închide()

# tipăriți cadrul de date
angajat.afişa()

Ieșire:

Următoarea ieșire va apărea după rularea scriptului.

Concluzie

Modulul Pickle este o caracteristică utilă a python pentru serializarea și deserializarea datelor. După finalizarea exemplelor prezentate în acest tutorial, transferul de date dintr-un script python în alt script python va fi mai ușor pentru oricine.