„Python“ kartais turime išsaugoti objektą diske, kad galėtume naudoti vėliau. Tai galima padaryti naudojant Python marinatą. Šiame straipsnyje mes sužinosime apie marinuotus agurkus Python ir keletą pavyzdžių.
Python Pickle – Python objektų serializavimas
Python marinuotų agurkų modulis naudojamas Python objektų struktūros serializavimui ir išserializavimui. Bet koks Python objektas gali būti pažymėtas, kad jį būtų galima išsaugoti diske. Pickle atlieka objekto seriją prieš įrašydamas jį į failą. Marinavimas – tai būdas Python objektą (sąrašą, žodyną ir kt.) konvertuoti į simbolių srautą. Idėja ta, kad šiame simbolių sraute yra visa informacija, reikalinga objektui rekonstruoti kitame Python scenarijus. Tai suteikia galimybę konvertuoti bet kurį Python objektą į baitų srautą. Šiame baitų sraute yra visa esminė informacija apie objektą, kad jį būtų galima atkurti arba atrinkti ir atkurti pradinę formą bet kuriame Python.

Serializacijos darbas
Python Pickle pavyzdys
Marinavimas be failo
Šiame pavyzdyje mes suskirstysime žodyno duomenis ir išsaugosime juos baitų sraute. Tada šie duomenys deserializuojami naudojant marinatas.loads() funkcija grąžinti į pradinį Python objektą.
kiek sveria kat timpf
Python3
sveikasis skaičius į eilutę java
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)> |
>
>
Išvestis:
java yra pavyzdys
{'Omkar': {'key': 'Omkar', 'name': 'Omkar Pathak', 'age': 21, 'pay': 40000}, 'Jagdish': {'key': 'Jagdish', 'name': 'Jagdish Pathak', 'age': 50, 'pay': 50000}}> Marinavimas dilde
Šiame pavyzdyje naudosime marinavimo failą, norėdami pirmiausia įrašyti duomenis į jį naudodami funkciją pickle.dump(). Tada naudodamiesi funkcija pickle.load() įkelsime Picle fine Python scenarijus ir išspausdinsime jo duomenis Python žodyno forma.
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()> |
>
konvertuoti eilutę į char
>
Išvestis:
Omkar =>{'raktas': 'Omkar', 'vardas': 'Omkar Pathak', 'amžius': 21, 'pay': 40000} Jagdish => {'key' ': 'Jagdish', 'vardas': 'Jagdish Pathak', 'amžius': 50, 'pay': 50000}> „Pickle“ naudojimo „Python“ pranašumai
- Rekursyvūs objektai (objektai, turintys nuorodas į save): „Pickle“ seka objektus, kuriuos jau buvo suskirstytas į serijas, todėl vėlesnės nuorodos į tą patį objektą nebebus serijinės. (Dėl to sugenda maršalo modulis.)
- Dalijimasis objektu (nuorodos į tą patį objektą skirtingose vietose): Tai panašu į save nurodančius objektus. „Pickle“ išsaugo objektą vieną kartą ir užtikrina, kad visos kitos nuorodos nukreiptų į pagrindinę kopiją. Bendrinami objektai lieka bendrinami, o tai gali būti labai svarbu keičiamiems objektams.
- Vartotojo nustatytos klasės ir jų atvejai: „Marshal“ jų visiškai nepalaiko, tačiau „Pickle“ gali skaidriai išsaugoti ir atkurti klasės egzempliorius. Klasės apibrėžimas turi būti importuojamas ir gyventi tame pačiame modulyje, kaip ir tada, kai objektas buvo saugomas.
„Pickle“ naudojimo „Python“ trūkumai
- „Python“ versijos priklausomybė: „Picle“ duomenys yra tokie jautrūs sukurtai Python versijai. Marinuotas objektas, sukurtas naudojant vieną Python versiją, kuris gali būti neišskirtas naudojant įvairias versijas.
- Neskaitoma: Marinuotų agurkų formatas yra dvejetainis ir žmonėms nėra lengva perskaityti ar redaguoti. JSON arba XML formato sutartis galima lengvai keisti.
- Didelis duomenų neefektyvumas: Dideli duomenų rinkiniai gali sulėtinti marinavimą ir išėmimą. Serializavimas gali būti tinkamesnis tokiais atvejais.
Išvada
Nors „Python Pickle“ siūlo objektų serializavimo galimybes, kūrėjai išlaiko apribojimus, ypač dirbdami su įvairiomis „Python“ versijomis arba tvarkydami didelius duomenų rinkinius. Svarbu atsiminti, kad visada atsižvelkite į konkrečius programos poreikius, kad nustatytumėte, ar ickle arba alternatyva, pvz., JSON, XML, tinka serializuoti.