Python

Hoe objecten in Python te pekelen

Hoe objecten in Python te pekelen
Alle gegevens kunnen worden geserialiseerd en gedeserialiseerd in Python 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 geconverteerd naar tekenstromen met behulp van deze module. 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 beschreven in deze tutorial.

augurk kenmerken:

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 neemt een data-object dat moet serialiseren. Het tweede argument neemt het bestandshandlerobject van dat bestand waar de gepickte gegevens worden opgeslagen. Het laatste argument krijgt de protocolnaam.

Syntaxis:

dump(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 het 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
augurk importeren
# Declareer het object om gegevens op te slaan
dataObject = []
# Herhaal de for-lus 5 keer en neem taalnamen
voor n in bereik (5):
raw = input('Voer een taalnaam in  :')
dataObject.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.dump(dataObject, file_handler)
# sluit de bestandshandler om de bronnen vrij te geven
file_handler.dichtbij()
# Bericht afdrukken
print('Gegevens zijn geserialiseerd')

Uitgang:

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

Gegevens uit een bestand halen

het ontbeitsen van gegevens is het tegenovergestelde van gegevens beitsen. Maak een bestand met de naam augurk.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. De volgende, voor lus wordt gebruikt, herhaal de gegevens van de dataObject en print in de terminal.

# Importeer de augurkmodule
augurk importeren
# 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
print('Gegevens na deserialisatie')
# Herhaal de lus om de gegevens af te drukken na deserialisatie
voor val in dataObject:
print('De gegevenswaarde: ', val)

Uitgang:

De volgende uitvoer zal verschijnen 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, Werknemer klasse 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, dan is het bericht, "Gegevens zijn geserialiseerd" zal afdrukken.

# Pickle-module importeren
augurk importeren
# Declareer de werknemersklasse om de waarde op te slaan
klas Medewerker:
def __init__(zelf, naam, e-mail, bericht):
zelf.naam = naam
zelf.e-mail = e-mail
zelf.posten = posten
 
#Maak werknemersobject
empObject = Werknemer('Farheen', '[email protected]', 'Manager')
# Open bestand voor winkelgegevens
fileHandler = open('employeeData', 'wb')
# Sla de gegevens op in het bestand
augurk.dump(empObject, fileHandler)
# Sluit het bestand
fileHandler.dichtbij()
# Bericht afdrukken
print('Gegevens zijn geserialiseerd')

Uitgang:

De volgende uitvoer zal verschijnen 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 augurk.py met de volgende code:. Werknemer klasse wordt hier gedefinieerd om de gegevens op te halen. bestandObject variabele wordt gebruikt om het bestand te openen, werknemerData voor lezen. De volgende, laden() functie wordt gebruikt om de gegevens in het klasseobject op te slaan na deserialisatie. Scherm() functie van de Werknemer class wordt aangeroepen om de gegevenswaarden van het klasseobject af te drukken.

# Pickle-module importeren
augurk importeren
# Verklaar werknemersklasse om gegevens uit een bestand te lezen en af ​​te drukken
klas Medewerker:
def __init__(zelf, naam, e-mail, bericht):
zelf.naam = naam
zelf.e-mail = e-mail
zelf.posten = posten
def weergeven (zelf):
print('Werknemersinformatie:')
print('Naam:', zelf.naam)
print('E-mail:', zelf.e-mail)
print('Post :', zelf.post)
 
# Open het bestand om te lezen
fileObject = open('employeeData', 'rb')
# Ontkoppel de gegevens
werknemer = augurk.laden (bestandsobject)
# Sluit bestand
bestandObject.dichtbij()
#print het dataframe
werknemer.Scherm()

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het script:.

Conclusie

Pickle-module is een handige functie van python voor dataserialisatie 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.

Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...
Hoe FPS-teller in Linux-games te tonen
Linux-gaming kreeg een grote duw toen Valve in 2012 Linux-ondersteuning voor Steam-client en hun games aankondigde. Sindsdien hebben veel AAA- en indi...
Sid Meier's Civilization VI downloaden en spelen op Linux and
Inleiding tot het spel Civilization 6 is een moderne versie van het klassieke concept dat werd geïntroduceerd in de serie Age of Empires-games. Het id...