I Python må vi noen ganger lagre objektet på disken for senere bruk. Dette kan gjøres ved å bruke Python pickle. I denne artikkelen vil vi lære om pickles i Python sammen med noen få eksempler.
Python Pickle — Python-objektserialisering
Python sylteagurk modul brukes til å serialisere og de-serialisere en Python-objektstruktur. Ethvert objekt i Python kan syltes slik at det kan lagres på disk. Det Pickle gjør er at den serialiserer objektet først før det skrives til en fil. Pickling er en måte å konvertere et Python-objekt (liste, ordbok, etc.) til en karakterstrøm. Tanken er at denne karakterstrømmen inneholder all informasjonen som er nødvendig for å rekonstruere objektet i et annet Python manus. Det gir en mulighet for å konvertere ethvert Python-objekt til en bytestrøm. Denne Byte-strømmen inneholder all viktig informasjon om objektet slik at det kan rekonstrueres, eller unpicklet og komme tilbake til sin opprinnelige form i hvilken som helst Python.

Arbeid av en serialisering
Eksempel på Python Pickle
Beising uten fil
I dette eksemplet vil vi serialisere ordbokdataene og lagre dem i en bytestrøm. Deretter blir disse dataene deserialisert ved hjelp av pickle.loads() funksjon tilbake til det opprinnelige Python-objektet.
vårramme
Python3
import> pickle> # initializing data to be stored in db> Omkar>=> {>'key'> :>'Omkar'>,>'name'> :>'Omkar Pathak'>,> 'age'> :>21>,>'pay'> :>40000>}> Jagdish>=> {>'key'> :>'Jagdish'>,>'name'> :>'Jagdish Pathak'>,> 'age'> :>50>,>'pay'> :>50000>}> # database> db>=> {}> db[>'Omkar'>]>=> Omkar> db[>'Jagdish'>]>=> Jagdish> # For storing> # type(b) gives ;> b>=> pickle.dumps(db)> # For loading> myEntry>=> pickle.loads(b)> print>(myEntry)> |
apurva padgaonkar
>
>
Produksjon:
sammenknytte java-strenger
{'Omkar': {'key': 'Omkar', 'name': 'Omkar Pathak', 'age': 21, 'pay': 40000}, 'Jagdish': {'key': 'Jagdish', 'name': 'Jagdish Pathak', 'age': 50, 'pay': 50000}}> Sylting med en fil
I dette eksemplet vil vi bruke en pickle-fil til først å skrive dataene i den ved å bruke funksjonen pickle.dump(). Deretter bruker vi pickle.load()-funksjonen, vil vi laste inn pickle fine i Python-skriptet og skrive ut dataene i form av en Python-ordbok.
Python3
# Python3 program to illustrate store> # efficiently using pickle module> # Module translates an in-memory Python object> # into a serialized byte stream—a string of> # bytes that can be written to any file-like object.> import> pickle> def> storeData():> ># initializing data to be stored in db> >Omkar>=> {>'key'> :>'Omkar'>,>'name'> :>'Omkar Pathak'>,> >'age'> :>21>,>'pay'> :>40000>}> >Jagdish>=> {>'key'> :>'Jagdish'>,>'name'> :>'Jagdish Pathak'>,> >'age'> :>50>,>'pay'> :>50000>}> ># database> >db>=> {}> >db[>'Omkar'>]>=> Omkar> >db[>'Jagdish'>]>=> Jagdish> > ># Its important to use binary mode> >dbfile>=> open>(>'examplePickle'>,>'ab'>)> > ># source, destination> >pickle.dump(db, dbfile)> >dbfile.close()> def> loadData():> ># for reading also binary mode is important> >dbfile>=> open>(>'examplePickle'>,>'rb'>)> >db>=> pickle.load(dbfile)> >for> keys>in> db:> >print>(keys,>'=>'>, db[keys])> >dbfile.close()> if> __name__>=>=> '__main__'>:> >storeData()> >loadData()> |
awt java
>
>
Produksjon:
velg fra flere tabeller sql
Omkar =>{'key': 'Omkar', 'name': 'Omkar Pathak', 'alder': 21, 'pay': 40000} Jagdish => {'key ': 'Jagdish', 'navn': 'Jagdish Pathak', 'alder': 50, 'pay': 50000}> Fordeler med å bruke Pickle i Python
- Rekursive objekter (objekter som inneholder referanser til seg selv): Pickle holder styr på objektene den allerede har serialisert, så senere referanser til det samme objektet vil ikke serialiseres igjen. (Marskalmodulen bryter for dette.)
- Objektdeling (referanser til samme objekt på forskjellige steder): Dette ligner på selvrefererende objekter. Pickle lagrer objektet én gang, og sørger for at alle andre referanser peker til hovedkopien. Delte objekter forblir delte, noe som kan være svært viktig for mutbare objekter.
- Brukerdefinerte klasser og deres forekomster: Marshal støtter ikke disse i det hele tatt, men Pickle kan lagre og gjenopprette klasseforekomster transparent. Klassedefinisjonen må være importerbar og leve i samme modul som da objektet ble lagret.
Ulemper ved å bruke pickle i Python
- Python-versjonsavhengighet: Data fra picle er så sensitive for versjonen av Python som ble produsert. Syltet objekt opprettet med én versjon av Python som kanskje ikke er opphevet med ulike versjoner.
- Ikke-lesbar: Formatet til sylteagurk er binært og ikke lett lesbart eller redigerbart av mennesker. Kontraktene som er i JSON- eller XML-format kan enkelt endres.
- Stor dataineffektivitet: Store datasett kan bremse beisingen og avbeitingen. Serialisering kan være mer passende for slike brukstilfeller.
Konklusjon
Mens Python Pickle tilbyr muligheter for objektserialisering, utviklere som opprettholder begrensninger, spesielt mens de jobber på tvers av forskjellige Python-versjoner eller håndterer de store datasettene. Det er viktig å huske å alltid vurdere de spesifikke behovene til applikasjonen din for å avgjøre om ickle eller et alternativ som JSON, XML er egnet for serialisering.