Hoe objecten in Python te pekelen

How Pickle Objects Python



Alle gegevens kunnen in Python worden geserialiseerd en gedeserialiseerd met behulp van de JSON- en Pickle-module. Voordat gegevens in een bestand worden opgeslagen, worden Python-objecten geserialiseerd met behulp van de augurkmodule. Python-objecten worden met behulp van deze module omgezet in tekenstromen. Wanneer de gebruiker de gegevens van het bestand wil ophalen voor het gebruik van een ander python-script, worden de gegevens van het bestand gedeserialiseerd door de augurkmodule. De kenmerken van de augurkmodule en hoe deze module kan worden gebruikt in python-script voor serialisatie en deserialisatie worden in deze zelfstudie beschreven.

augurk kenmerken:

  • Het is voornamelijk ontworpen om te gebruiken voor Python-script.
  • Het wordt gebruikt voor het opslaan van de python-objecten tussen de processen.
  • Het houdt alle geserialiseerde objecten bij en het object dat eerder is geserialiseerd, zal niet opnieuw worden geserialiseerd.
  • Het kan klasse-instanties transparant opslaan en herstellen.
  • Het is niet veilig om te gebruiken. Het is dus niet beter om gegevens uit een onbekende bron te ontrafelen.

dump() voor serialisatie:

dump() functie wordt gebruikt om de objectgegevens om te zetten in een tekenstroom voordat ze in een bestand worden opgeslagen. Deze functie kan drie argumenten aannemen. De eerste twee argumenten zijn verplicht en het laatste argument is optioneel. Het eerste argument is een data-object dat moet worden geserialiseerd. Het tweede argument neemt het bestandshandlerobject van dat bestand waar de verzamelde gegevens worden opgeslagen. Het laatste argument krijgt de protocolnaam.





Syntaxis:



dumpen(data_object,file_object, [protocol])

load() voor deserialisatie:

load() functie wordt gebruikt om karakterstroomgegevens uit het bestand om te zetten in een Python-object. Deze functie bevat slechts één argument en het bestandshandlerobject van bestand gaat door als de argumentwaarde van waaruit de gegevens worden opgehaald.



Syntaxis:





laden(file_object)

Kies een eenvoudig object om in een bestand op te slaan

Maak een bestand met de naam augurk1.py met het volgende python-script. In het volgende script wordt een gegevensobject met de naam dataObject wordt gedeclareerd om vijf taalnamen op te slaan door de for-lus te herhalen. Vervolgens wordt de methode open() gebruikt om een ​​bestandshandler toe te wijzen voor het maken van een binair bestand met de naam talen. dumpen() functie wordt hier gebruikt om de gegevens van te serialiseren dataObject en bewaar het in de talen het dossier. Als de serialisatie correct wordt uitgevoerd, wordt het bericht Data is serialized afgedrukt.

# Importeer de augurkmodule
importeren augurk

# Declareer het object om gegevens op te slaan
dataObject= []

# Herhaal de for-lus 5 keer en neem taalnamen
voorNin bereik(5):
rauw= invoer('Voer een taalnaam in:')

gegevensObject.toevoegen(rauw)

# Open een bestand voor het schrijven van gegevens
file_handler= open('talen', 'wb')

# Dump de gegevens van het object in het bestand
augurk.dumpen(dataObject,file_handler)

# sluit de bestandshandler om de bronnen vrij te geven
file_handler.dichtbij()

# Bericht afdrukken
afdrukken('Gegevens zijn geserialiseerd')

Uitgang:



Nadat het script is uitgevoerd, zijn er vijf taalnamen nodig als invoer.

Gegevens uit een bestand halen

het ontbeitsen van de gegevens is het tegenovergestelde van het beitsen van gegevens. Maak een bestand met de naam augurk2.py met het volgende python-script. Hier, open() methode wordt gebruikt om het binaire bestand met de naam . te openen talen , gemaakt in het vorige voorbeeld. laden() functie wordt gebruikt om de gegevens uit het bestand te halen en op te slaan in de variabele dataObject . Volgende, voor lus wordt gebruikt, herhaal de gegevens van de dataObject en print in de terminal.

# Importeer de augurkmodule
importeren augurk

# Open een bestandshandler voor het lezen van een bestand van waaruit de gegevens worden geladen
file_handler= open('talen', 'rb')

# Laad de gegevens uit het bestand na deserialisatie
dataObject= augurk.laden(file_handler)

# Sluit de bestandshandler
file_handler.dichtbij()

# Bericht afdrukken
afdrukken('Gegevens na deserialisatie')

# Herhaal de lus om de gegevens af te drukken na deserialisatie
vooruurindataObject:
afdrukken('De gegevenswaarde: ',uur)

Uitgang:

De volgende uitvoer verschijnt na het uitvoeren van het script.

Pickle een Class Object naar een bestand

In het volgende voorbeeld wordt getoond hoe een klasseobject kan worden gebeitst. Maak een bestand met de naam augurk3.py met het volgende script. Hier, Medewerker class wordt gedeclareerd om drie gegevenswaarden van een werknemer toe te wijzen. Vervolgens een bestandshandlerobject met de naam fileHandler is gemaakt om een ​​bestand te openen om te schrijven. Nadat het klasseobject is geïnitialiseerd, worden de gegevens geserialiseerd met behulp van dumpen() functie en opgeslagen in het bestand met de naam werknemerData . Als het bestand correct wordt aangemaakt, wordt het bericht, Gegevens zijn geserialiseerd zal afdrukken.

# Pickle-module importeren
importeren augurk

# Declareer de werknemersklasse om de waarde op te slaan
klasMedewerker:
zeker __in het__(zelf,naam, e-mail,na):
zelf.naam =naam
zelf.e-mail = e-mail
zelf.na =na

#Maak werknemersobject
empObject=Medewerker('Farheen', ' [e-mail beveiligd]', 'Manager')

# Open bestand voor winkelgegevens
fileHandler= open('medewerkergegevens', 'wb')

# Sla de gegevens op in het bestand
augurk.dumpen(empObject,fileHandler)

# Sluit het bestand
bestandHandler.dichtbij()

# Bericht afdrukken
afdrukken('Gegevens zijn geserialiseerd')

Uitgang:

De volgende uitvoer verschijnt na het uitvoeren van het script.

Gegevens loskoppelen naar een klasseobject

Een klasse met de nodige eigenschappen en methoden zal moeten declareren voor het ophalen van de gegevens uit een bestand naar een klasseobject. Maak een bestand met de naam augurk4.py met de volgende code. Medewerker class wordt hier gedefinieerd om de gegevens op te halen. bestandObject variabele wordt gebruikt om het bestand te openen, werknemerData voor lezen. Volgende, laden() functie wordt gebruikt om de gegevens in het klasseobject op te slaan na deserialisatie. Scherm() functie van de Medewerker class wordt aangeroepen om de gegevenswaarden van het klasseobject af te drukken.

# Pickle-module importeren
importeren augurk

# Verklaar werknemersklasse om gegevens uit een bestand te lezen en af ​​te drukken
klasMedewerker:
zeker __in het__(zelf,naam, e-mail,na):
zelf.naam =naam
zelf.e-mail = e-mail
zelf.na =na

zekerScherm(zelf):
afdrukken('Werknemers informatie:')
afdrukken('Naam :', zelf.naam)
afdrukken('E-mail:', zelf.e-mail)
afdrukken('Na :', zelf.na)

# Open het bestand om te lezen
bestandObject= open('medewerkergegevens', 'rb')

# Ontkoppel de gegevens
medewerker= augurk.laden(bestandObject)

# Sluit bestand
bestandObject.dichtbij()

#print het dataframe
medewerker.Scherm()

Uitgang:

De volgende uitvoer verschijnt na het uitvoeren van het script.

Conclusie

Pickle-module is een handige functie van python voor gegevensserialisatie en deserialisatie. Na het voltooien van de voorbeelden die in deze zelfstudie worden getoond, zal de gegevensoverdracht van het ene python-script naar het andere python-script voor iedereen gemakkelijker zijn.