Com escabetxar objectes a Python

How Pickle Objects Python



Qualsevol dada es pot serialitzar i deserialitzar a Python mitjançant el mòdul JSON i Pickle. Abans d’emmagatzemar qualsevol dada en un fitxer, els objectes Python es serialitzen mitjançant un mòdul d’escabetx. Els objectes Python es converteixen en fluxos de caràcters mitjançant aquest mòdul. Quan l'usuari vol recuperar les dades del fitxer per utilitzar un altre script python, les dades del fitxer es desserialitzaran mitjançant un mòdul d'escabetx. En aquest tutorial es descriuen les característiques del mòdul pickle i com es pot utilitzar aquest mòdul en scripts Python per a la serialització i deserialització.

Característiques de l'escabetx:

  • Està dissenyat principalment per utilitzar-lo per a scripts Python.
  • S'utilitza per desar els objectes python entre els processos.
  • Realitza un seguiment de tots els objectes serialitzats i l'objecte que es serialitza abans no es tornarà a serialitzar.
  • Pot desar i restaurar la instància de classe de forma transparent.
  • No és segur d'utilitzar. Per tant, no és millor desfer dades d'una font desconeguda.

dump () per a la serialització:

La funció dump () s'utilitza per convertir les dades de l'objecte en un flux de caràcters abans de desar-les en un fitxer. Aquesta funció pot adoptar tres arguments. Els dos primers arguments són obligatoris i l’últim argument és opcional. El primer argument pren un objecte de dades que s’ha de serialitzar. El segon argument pren l'objecte del gestor de fitxers d'aquest fitxer on s'emmagatzemaran les dades empaquetades. L'últim argument pren el nom del protocol.







Sintaxi:



abocador(objecte_dades,objecte_arxiu, [protocol])

load () per a la deserialització:

La funció load () s'utilitza per convertir les dades del flux de caràcters del fitxer en un objecte Python. Aquesta funció només conté un argument i l'objecte gestor de fitxers del fitxer passa com a valor d'argument des d'on es recuperaran les dades.



Sintaxi:





càrrega(objecte_arxiu)

Escapeu un objecte senzill per emmagatzemar-lo en un fitxer

Creeu un fitxer anomenat pickle1.py amb el següent script python. Al següent script, es denomina un objecte de dades dataObject es declara que emmagatzema cinc noms d’idiomes iterant el bucle for. A continuació, s’utilitza el mètode open () per assignar un gestor de fitxers per crear un fitxer binari anomenat idiomes. abocar () aquí s'utilitza la funció per serialitzar les dades de dataObject i emmagatzemeu-lo a idiomes dossier. Si la serialització es realitzarà correctament, s'imprimirà un missatge, Data is serialized.

# Importeu el mòdul d'escabetx
importació escabetx

# Declara l'objecte per emmagatzemar dades
dataObject= []

# Repeteix el bucle for cinc vegades i pren noms d'idiomes
perndins abast(5):
crua= entrada('Introduïu un nom d'idioma:')

dataObject.afegir(crua)

# Obriu un fitxer per escriure dades
gestor_de_arxius= obert('idiomes', 'wb')

# Bolqueu les dades de l'objecte al fitxer
escabetx.abocador(dataObject,gestor_de_arxius)

# tanqueu el controlador de fitxers per alliberar els recursos
gestor_de_arxius.Tanca()

# Imprimeix el missatge
imprimir('Les dades estan serialitzades')

Sortida:



Després d’executar l’escriptura, es prendran cinc noms d’idiomes com a entrada.

Desmarqueu les dades d'un fitxer

despullar les dades és el contrari de les dades de decapatge. Creeu un fitxer anomenat pickle2.py amb el següent script python. Aquí, open () s'utilitza el mètode per obrir el fitxer binari anomenat idiomes , creat a l'exemple anterior. load () La funció s'utilitza per desenganxar les dades del fitxer i emmagatzemar-les a la variable dataObject . Pròxim, per s'utilitza bucle iterar les dades del fitxer dataObject i imprimir al terminal.

# Importeu el mòdul d'escabetx
importació escabetx

# Obriu un gestor de fitxers per llegir un fitxer des d'on es carregaran les dades
gestor_de_arxius= obert('idiomes', 'rb')

# Carregueu les dades del fitxer després de la deserialització
dataObject= escabetx.càrrega(gestor_de_arxius)

# Tanqueu el controlador de fitxers
gestor_de_arxius.Tanca()

# Imprimeix el missatge
imprimir('Dades després de la deserialització')

# Iterar el bucle per imprimir les dades després de la deserialització
perhoresdinsdataObject:
imprimir('El valor de les dades:',hores)

Sortida:

La següent sortida apareixerà després d'executar l'script.

Seleccioneu un objecte de classe a un fitxer

El següent exemple mostra com es pot adobar un objecte de classe. Creeu un fitxer anomenat pickle3.py amb el següent guió. Aquí, Empleat es declara que assigna tres valors de dades a un empleat. A continuació, es diu un objecte gestor de fitxers fileHandler es crea per obrir un fitxer per escriure. Després d'inicialitzar l'objecte de classe, les dades es serialitzen mitjançant abocar () funció i emmagatzemada al fitxer anomenat empleatDades . Si el fitxer es crearà correctament, el missatge, Les dades es serialitzen imprimirà.

# Mòdul d'importació d'escabetx
importació escabetx

# Declareu la classe dels empleats per emmagatzemar el valor
classeEmpleat:
def __init__(jo mateix,nom, correu electrònic,publicar):
jo mateix.nom =nom
jo mateix.correu electrònic = correu electrònic
jo mateix.publicar =publicar

#Crear objecte d'empleat
empObject=Empleat('Farheen', '[email protected]', 'Gestor')

# Obre el fitxer per a dades de la botiga
fileHandler= obert('empleatDades', 'wb')

# Deseu les dades al fitxer
escabetx.abocador(empObject,fileHandler)

# Tanca el fitxer
fileHandler.Tanca()

# Imprimeix el missatge
imprimir('Les dades estan serialitzades')

Sortida:

La següent sortida apareixerà després d'executar l'script.

Desmarqueu les dades a un objecte de classe

Una classe amb les propietats i mètodes necessaris haurà de declarar per recuperar les dades d'un fitxer a un objecte de classe. Creeu un fitxer anomenat pickle4.py amb el següent codi. Empleat aquí es defineix la classe per recuperar les dades. fileObject La variable s'utilitza per obrir el fitxer, empleatDades per llegir. Pròxim, load () La funció s'utilitza per emmagatzemar les dades a l'objecte de classe després de la deserialització. display () funció del Empleat class es diu per imprimir els valors de dades de l'objecte class.

# Mòdul d'importació d'escabetx
importació escabetx

# Declareu la classe dels empleats per llegir i imprimir dades d'un fitxer
classeEmpleat:
def __init__(jo mateix,nom, correu electrònic,publicar):
jo mateix.nom =nom
jo mateix.correu electrònic = correu electrònic
jo mateix.publicar =publicar

defvisualització(jo mateix):
imprimir('Informació per a empleats:')
imprimir('Nom :', jo mateix.nom)
imprimir('Correu electrònic:', jo mateix.correu electrònic)
imprimir('Publicació:', jo mateix.publicar)

# Obriu el fitxer per llegir-lo
fileObject= obert('empleatDades', 'rb')

# Desengordeu les dades
empleat= escabetx.càrrega(fileObject)

# Tanca el fitxer
fileObject.Tanca()

#print el marc de dades
empleat.visualització()

Sortida:

La següent sortida apareixerà després d'executar l'script.

Conclusió

El mòdul Pickle és una característica útil de Python per a la serialització i deserialització de dades. Després de completar els exemples mostrats en aquest tutorial, la transferència de dades d'un script Python a un altre script Python serà més fàcil per a tothom.