Python

Sådan pickles objekter i Python

Sådan pickles objekter i Python
Alle data kan serieiseres og deserialiseres i Python ved hjælp af JSON og Pickle-modulet. Før du gemmer data i en fil, serialiseres Python-objekter ved hjælp af pickle-modul. Python-objekter konverteres til tegnstrømme ved hjælp af dette modul. Når brugeren ønsker at hente dataene i filen til brug af et andet python-script, deserialiseres filens data ved hjælp af pickle-modul. Funktionerne i pickle-modulet og hvordan dette modul kan bruges i python-script til serialisering og deserialisering er beskrevet i denne vejledning.

Pickle Funktioner:

dump () til serialisering:

dump () -funktion bruges til at konvertere objektdataene til en tegnstrøm, før de gemmes i en fil. Denne funktion kan tage tre argumenter. De to første argumenter er obligatoriske, og det sidste argument er valgfri. Det første argument tager et dataobjekt, der skal serialiseres. Det andet argument tager filhåndteringsobjektet for den fil, hvor de pckledata gemmes. Det sidste argument tager protokolnavnet.

Syntaks:

dump (data_object, file_object, [protokol])

load () til deserialisering:

load () -funktion bruges til at konvertere tegnstrømdata fra filen til et Python-objekt. Denne funktion indeholder kun ét argument, og filhåndteringsobjektet for filen passerer som argumentværdien, hvorfra dataene hentes.

Syntaks:

indlæs (file_object)

Pickle et simpelt objekt, der skal gemmes i en fil

Opret en fil med navnet pickle1.py med følgende python-script.  I det følgende script kaldes et dataobjekt dataObject erklæres at gemme fem sprognavne ved at gentage for-sløjfen. Dernæst bruges open () -metoden til at tildele en filhåndterer til oprettelse af en binær fil med navnet Sprog. dump () funktionen bruges her til at serialisere dataene fra dataObject og opbevar det i Sprog fil.  Hvis serialiseringen udføres korrekt, udskrives en meddelelse, "Data serialiseres".

# Importer pickle-modulet
import pickle
# Erklær objektet til at gemme data
dataObject = []
# Iterer for-sløjfen 5 gange, og tag sprognavne
for n i området (5):
raw = input ('Indtast et sprognavn:')
dataObject.tilføje (rå)
# Åbn en fil til skrivning af data
file_handler = åben ('sprog', 'wb')
# Dump dataene fra objektet i filen
pickle.dump (dataObject, file_handler)
# luk filhåndtereren for at frigøre ressourcerne
filhåndterer.tæt()
# Udskriv besked
print ('Data er serieliseret')

Produktion:

Efter kørsel af scriptet tager det fem sprognavne som input.

Fjern markering af data fra en fil

unpickling af data er det modsatte af pickling data. Opret en fil med navnet pickle2.py med følgende python-script. Her, åben() metoden bruges til at åbne den navngivne binære fil Sprog, oprettet i det foregående eksempel. belastning() funktion bruges til at fjerne markeringen af ​​dataene fra filen og gemme dem i variablen dataObject. Næste, til loop bruges iterere data fra dataObject og udskrive i terminalen.

# Importer pickle-modulet
import pickle
# Åbn en filhåndterer til læsning af en fil, hvorfra dataene indlæses
file_handler = åben ('sprog', 'rb')
# Indlæs dataene fra filen efter deserialisering
dataObject = pickle.indlæs (filhåndterer)
# Luk filhåndtereren
filhåndterer.tæt()
# Udskriv besked
print ('Data efter deserialisering')
# Iterer sløjfen for at udskrive dataene efter deserialisering
for val in dataObject:
print ('Dataværdien:', val)

Produktion:

Følgende output vises efter kørsel af scriptet.

Pickle et klasseobjekt til en fil

Hvordan et klasseobjekt kan pickles vises i det følgende eksempel. Opret en fil med navnet pickle3.py med følgende script. Her, Medarbejder klasse erklæres for at tildele en medarbejder tre dataværdier. Dernæst et filhåndteringsobjekt med navnet fileHandler er oprettet for at åbne en fil til skrivning. Efter initialisering af klasseobjektet serieres data ved hjælp af dump () funktion og gemmes i den navngivne fil medarbejderdata. Hvis filen oprettes korrekt, så meddelelsen, "Data serieliseres" udskrives.

# Importer pickle-modul
import pickle
# Erklær medarbejderklassen for at gemme værdien
klasse medarbejder:
def __init __ (selv, navn, e-mail, post):
selv.navn = navn
selv.e-mail = e-mail
selv.post = post
 
# Opret medarbejderobjekt
empObject = Medarbejder ('Farheen', '[email protected]', 'Manager')
# Åbn fil til lagerdata
fileHandler = åben ('medarbejderdata', 'wb')
# Gem dataene i filen
pickle.dump (empObject, fileHandler)
# Luk filen
fileHandler.tæt()
# Udskriv besked
print ('Data er serieliseret')

Produktion:

Følgende output vises efter kørsel af scriptet.

Fjern markering af data til et klasseobjekt

En klasse med de nødvendige egenskaber og metoder skal erklære for at hente data fra en fil til et klasseobjekt. Opret en fil med navnet pickle4.py med følgende kode. Medarbejder klasse er defineret her for at hente dataene. fileObject variabel bruges til at åbne filen, medarbejderdata til læsning. Næste, belastning() funktion bruges til at gemme dataene i klasseobjektet efter deserialisering. Skærm() funktion af Medarbejder klasse kaldes til at udskrive dataværdierne for klasseobjektet.

# Importer pickle-modul
import pickle
# Erklær medarbejderklasse til at læse og udskrive data fra en fil
klasse medarbejder:
def __init __ (selv, navn, e-mail, post):
selv.navn = navn
selv.e-mail = e-mail
selv.post = post
def display (selv):
print ('Medarbejderoplysninger:')
print ('Navn:', selv.navn)
print ('E-mail:', selv.e-mail)
print ('Post:', selv.stolpe)
 
# Åbn filen til læsning
fileObject = åben ('medarbejderdata', 'rb')
# Fjern markeringen af ​​dataene
medarbejder = pickle.load (fileObject)
# Luk fil
fileObject.tæt()
#print dataframmen
medarbejder.Skærm()

Produktion:

Følgende output vises efter kørsel af scriptet.

Konklusion

Pickle-modul er et nyttigt træk ved python til dataserialisering og deserialisering. Efter at have gennemført eksemplerne vist i denne vejledning, vil dataoverførslen fra et python-script til et andet python-script være lettere for alle.

Kæmp om Wesnoth-vejledning
Slaget om Wesnoth er et af de mest populære open source-strategispil, som du kan spille på dette tidspunkt. Ikke kun har dette spil været under udvikl...
0 A.D. Vejledning
Ud af de mange strategispil derude, 0 A.D. formår at skille sig ud som en omfattende titel og et meget dybt, taktisk spil på trods af at det er open s...
Unity3D Tutorial
Introduktion til Unity 3D Unity 3D er en kraftfuld spiludviklingsmotor. Det er cross platform, det er det giver dig mulighed for at oprette spil til m...