Pickles i Python er velsmakende i den forstand at de representerer et Python objekt som en streng av bytes. Mange ting kan faktisk gjøres med de byte. Du kan for eksempel lagre dem i en fil eller database, eller overføre dem over et nettverk.
Den sylte representasjonen av en Python-gjenstand kalles a pickle fil. Den syltefilen kan dermed brukes til forskjellige formål, for eksempel å lagre resultater som skal brukes av et annet Python-program eller skrive sikkerhetskopier. For å få den opprinnelige Python-objektet, gjør du det enkelt unpickle den mengden byte.
Å plukke i Python, vi skal bruke pickle
modul. Som nevnt i dokumentasjonen:
Pickle-modulen implementerer binære protokoller for serialisering og de-serialisering av en Python-objektstruktur. "Pickling" er prosessen der et Python-objekthierarki omdannes til en byte-strøm, og "unpickling" er den inverse operasjonen, hvorved en byte-strøm (fra en binærfil eller byteslignende gjenstand) omdannes tilbake til et objekthierarki. Pickling (og unpickling) er alternativt kjent som "serialisering", "marshalling" eller "flatering"; For å unngå forvirring er betegnelsene som benyttes her "pickling" og "unpickling".
De pickle
modulen tillater oss å lagre nesten hvilket som helst Python objekt direkte til en fil eller streng uten å måtte foreta konverteringer. Hva i pickle
modulen faktisk utfører er det som er såkalt objekt serialisering, det vil si å konvertere objekter til og fra strengene av byte. Objektet som skal syltes, blir serialisert i en strøm av byte som kan skrives til en fil, for eksempel, og gjenopprettes på et senere tidspunkt.
pickle
De pickle
Modulen leveres faktisk allerede med Python-installasjonen. For å få en liste over installerte moduler, kan du skrive følgende kommando i Python-spørringen: bidrar ( 'moduler')
.
Så alt du trenger å gjøre for å jobbe med pickle
modulen er til importere pickle
!
Fra dette avsnittet vil vi se på noen eksempler på å plukke for å forstå konseptet bedre. La oss begynne med å lage en pickle-fil fra en gjenstand. Vårt objekt her vil være å gjøre
liste vi laget i Pythons lister opplæring.
todo = ['skriv blogginnlegg', 'svar på e-post', 'les i en bok']
For å hente vårt listobjekt (å gjøre
), kan vi gjøre følgende:
import pickle todo = ['skriv blogginnlegg', 'svar på e-post', 'les i en bok'] pickle_file = fil ('todo.pickle', 'w') pickle.dump (todo, pickle_file)
Legg merke til at vi har laget en importere pickle
for å kunne bruke pickle
modul. Vi har også laget en pickle-fil for å lagre den sylte objektet i, nemlig todo.pickle
. De dump
funksjonen skriver en syltet representasjon av å gjøre
til det åpne filobjektet pickle_file
. Med andre ord, dump
funksjon her har to argumenter: objektet til å hakke, hvilket er å gjøre
liste og en filobjekt der vi ønsker å skrive pickle, som er todo.pickle
.
Si at vi ønsker å unpickle (gjenopprette) de syltede dataene; i vårt tilfelle er dette den å gjøre
liste. For å gjøre det kan vi skrive følgende skript:
import pickle pickle_file = fil ('todo.pickle') todo = pickle.load (pickle_file) print (todo)
Ovennevnte skript vil utgjøre å gjøre
liste elementer:
['skriv blogginnlegg', 'svar på e-post', 'les i en bok']
Som nevnt i dokumentasjonen, er belastning (fil)
funksjon gjør følgende:
Les en streng fra den åpne filobjektfilen, og tolk den som en pickle-datastrøm, rekonstruere og returnere det opprinnelige objekthierarkiet. Dette tilsvarerUnpickler (fil) .load ()
.
I avsnittet ovenfor så vi hvordan vi kan skrive / laste pickles til / fra en fil. Dette er imidlertid ikke nødvendig. Jeg mener at hvis vi vil skrive / laste pickles, trenger vi ikke alltid å håndtere filer - vi kan i stedet jobbe med pickles som strenger. Vi kan således gjøre følgende:
import pickle todo = ['skriv blogginnlegg', 'svar på e-post', 'les i en bok'] pickled_data = pickle.dumps (todo) print (pickled_data)
Legg merke til at vi har brukt dumper
(med en "s" på slutten) funksjon, som ifølge dokumentasjonen:
Returnerer den sylte representasjonen av objektet som en streng, i stedet for å skrive den til en fil.
For å gjenopprette syltet data ovenfor, kan vi bruke laster (string)
funksjon, som følger:
restored_data = pickle.loads (pickled_data)
Ifølge dokumentasjonen, hva laster
funksjonen er det det:
Leser et hakkede objekthierarki fra en streng. Tegn i strengen forbi syltet objektets representasjon ignoreres.
I eksemplene ovenfor har vi jobbet med å plukke og gjenopprette (lasting) bare ett objekt om gangen. I denne delen skal jeg vise deg hvordan vi kan gjøre det for mer enn ett objekt. Si at vi har følgende objekter:
navn = 'Abder' nettsted = 'http://abder.io' english_french = '' papir ':' papir ',' penn ':' stylo ',' bil ':' voiture ' # ordbok tup = 'abder', 4.0) # tuple
Hvis du vil lære mer om Python-ordbøker og tupler, kan du sjekke følgende veiledninger:
Vi kan bare hente ovenstående objekter ved å kjøre en serie av dump
Funksjoner, som følger:
importere pickle name = 'Abder' nettsted = 'http://abder.io' english_french = 'paper': 'papir', 'pen': 'stylo', 'bil': 'voiture' # ordbok tup = 31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') pickle.dump (navn, pickled_file) pickle.dump (nettsted, pickled_file) pickle.dump (english_french, pickled_file) pickle. dump (tup, pickled_file)
Dette vil hente alle de fire objektene i picklefilen pickled_file.pickle
.
Det er en annen flott måte å skrive det ovennevnte skriptet på Pickler
klasse i pickle
modul, som følger:
fra pickle import Pickler navn = 'Abder' nettsted = 'http://abder.io' english_french = '' papir ':' papir ',' penn ':' stylo ',' bil ':' voiture ' # ordbok tup = (31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') p = Pickler (pickled_file) p.dump (navn); p.dump (nettside); p.dump (english_french); p.dump (tup)
For å gjenopprette (laste) de opprinnelige dataene, kan vi bare bruke mer enn en laste
funksjon, som følger:
import pickle pickled_file = open ('pickled_file.pickle') navn = pickle.load (pickled_file) nettsted = pickle.load (pickled_file) english_french = pickle.load (pickled_file) tup = pickle.load (pickled_file) print ('Navn:' ) Skriv ut (navn) Skriv ut ('Nettsted:') Skriv ut (Nettsted) Skriv ut ('Engelsk til Fransk:') Skriv ut (engelsk_french) Skriv ut
Utgangen av det ovennevnte skriptet er:
Navn: Abder Hjemmeside: http://abder.io englsh til fransk: 'bil': 'voiture', 'pen': 'stylo', 'papir': 'papir' Tuple data: (31, 'abder' , 4,0)
Som med Pickler
klasse, kan vi omskrive det ovennevnte skriptet ved hjelp av Unpickler
klasse i pickle
modul, som følger:
fra pickle import Unpickler pickled_file = open ('pickled_file.pickle') u = Unpickler (pickled_file) navn = u.load (); nettsted = u.load (); english_french = u.load (); tup = u.load () print ('Navn:') print (navn) print ('Nettsted:') print (nettsted) print ('Engelsk til fransk:') print (english_french) print ('Tuple data:') print (tup)
Vær oppmerksom på at variablene må skrives og leses i samme rekkefølge for å få ønsket utgang. For å unngå problemer her, kan vi bruke en ordliste for å administrere dataene som følger:
importere pickle name = 'Abder' nettsted = 'http://abder.io' english_french = 'paper': 'papir', 'pen': 'stylo', 'bil': 'voiture' # ordbok tup = 31, 'abder', 4.0) # tuple pickled_file = open ('pickled_file.pickle', 'w') data = 'navn': navn, 'nettsted': nettside, 'english_french_dictionary': english_french, 'tuple': tup pickle.dump (data, pickled_file)
For å gjenopprette (laste) dataene som er syltet inn i det ovennevnte skriptet, kan vi gjøre følgende:
import pickle pickled_file = open ('pickled_file.pickle') data = pickle.load (pickled_file) navn = data ['navn'] nettside = data ['nettsted'] english_french = data ['english_french_dictionary'] tup = data ['tuple Skriv ut ('Navn:') Skriv ut (navn) Skriv ut ('Nettsted:') Skriv ut (Nettsted) Skriv ut ('Engelsk til Fransk:') Print (English_french)
Vel, dette virker som en interessant kombinasjon. Hvis du lurer på hva Pandas er, kan du lære mer om dem fra introduksjonspandas opplæringen. Den grunnleggende datastrukturen for pandaer
er kalt Dataramme
, en tabulær datastruktur bestående av bestilte kolonner og rader.
La oss ta et eksempel på Dataramme
fra Pandas opplæring:
importer pandas som pd name_age = 'Name': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] data_frame = pd.DataFrame (name_age)
For å hente vår Dataramme
, vi kan bruke to_pickle ()
funksjon, som følger:
data_frame.to_pickle ( 'my_panda.pickle')
For å gjenopprette (belaste) syltet Dataramme
, vi kan bruke read_pickle ()
funksjon, som følger:
restore_data_frame = pd.read_pickle ('my_panda.pickle')
Å sette det vi har nevnt i denne delen hele sammen, er dette som skriptet som henter og laster et pandasobjekt, ser ut som:
importer pandas som pd name_age = 'Name': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] data_frame = pd.DataFrame (name_age) data_frame.to_pickle ('my_panda.pickle') restore_data_frame = pd.read_pickle ('my_panda.pickle') utskrift (restore_data_frame)
I denne opplæringen har jeg dekket en interessant modul som heter pickle
. Vi har sett hvor enkelt denne modulen gjør at vi kan lagre Python-objekter til forskjellige formål, for eksempel å bruke objektet med et annet Python-program, overføre objektet over et nettverk, lagre objektet til senere bruk etc. Vi kan ganske enkelt plukke Python-objektet , og unpickle (load) den når vi vil gjenopprette det opprinnelige objektet.
Ikke nøl med å se hva vi har tilgjengelig for salg og for studier på markedet, og ikke nøl med å stille spørsmål og gi din verdifulle tilbakemelding ved å bruke feedet under.