logo

Python-peittauksen ymmärtäminen esimerkin avulla

Pythonissa meidän on joskus tallennettava objekti levylle myöhempää käyttöä varten. Tämä voidaan tehdä käyttämällä Python suolakurkkua. Tässä artikkelissa opimme suolakurkkuista Pythonissa ja muutamien esimerkkien kanssa.

Python Pickle — Python-objektien serialisointi

Python suolakurkku moduuli käytetään Python-objektirakenteen sarjoittamiseen ja sarjojen poistamiseen. Mikä tahansa Python-objekti voidaan peittää niin, että se voidaan tallentaa levylle. Pickle tekee sen, että se sarjoittaa objektin ennen kuin kirjoittaa sen tiedostoon. Peittaus on tapa muuntaa Python-objekti (luettelo, sanakirja jne.) merkkivirraksi. Ajatuksena on, että tämä merkkivirta sisältää kaiken tarvittavan tiedon objektin rekonstruoimiseksi toisessa Python käsikirjoitus. Se tarjoaa mahdollisuuden muuntaa mikä tahansa Python-objekti tavuvirraksi. Tämä tavuvirta sisältää kaiken oleellisen tiedon objektista, jotta se voidaan rekonstruoida tai poistaa ja saada takaisin alkuperäiseen muotoonsa missä tahansa Pythonissa.



Pickling-in-python-(1)

Serialisoinnin työskentely

Python Pickle esimerkki

Peittaus ilman tiedostoa

Tässä esimerkissä sarjoitamme sanakirjan tiedot ja tallennamme ne tavuvirtaan. Sitten nämä tiedot deserialisoidaan käyttämällä suolakurkku.loads() funktio takaisin alkuperäiseen Python-objektiin.

Python 3








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)>

>

>

Lähtö:

{'Omkar': {'key': 'Omkar', 'name': 'Omkar Pathak', 'age': 21, 'pay': 40000},  'Jagdish': {'key': 'Jagdish', 'name': 'Jagdish Pathak', 'age': 50, 'pay': 50000}}>

Peittaus viilalla

Tässä esimerkissä käytämme pickle-tiedostoa siihen, että kirjoitamme siihen ensin tiedot käyttämällä pickle.dump()-funktiota. Sitten käyttämällä pickle.load()-funktiota lataamme pickle fine Python-skriptillä ja tulostamme sen tiedot Python-sanakirjan muodossa.

Python 3




ota java käyttöön
# 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()>

>

>

Lähtö:

Omkar =>{'avain': 'Omkar', 'nimi': 'Omkar Pathak', 'ikä': 21, 'maksu': 40000} Jagdish => {'avain' ': 'Jagdish', 'nimi': 'Jagdish Pathak', 'ikä': 50, 'Pay': 50000}>

Picklen käytön edut Pythonissa

  1. Rekursiiviset objektit (objektit, jotka sisältävät viittauksia itseensä): Pickle pitää kirjaa objekteista, jotka se on jo sarjoittanut, joten myöhempiä viittauksia samaan kohteeseen ei sarjoiteta uudelleen. (Marsalkkamoduuli katkeaa tästä.)
  2. Objektin jakaminen (viittaukset samaan objektiin eri paikoissa): Tämä on samanlainen kuin itseviittaavat objektit. Pickle tallentaa objektin kerran ja varmistaa, että kaikki muut viittaukset osoittavat pääkopioon. Jaetut objektit pysyvät jaettuna, mikä voi olla erittäin tärkeää muuttuville objekteille.
  3. Käyttäjän määrittämät luokat ja niiden esiintymät: Marshal ei tue näitä ollenkaan, mutta Pickle voi tallentaa ja palauttaa luokkaesiintymiä läpinäkyvästi. Luokkamäärittelyn on oltava tuotava ja oltava samassa moduulissa kuin objektin tallennushetkellä.

Picklen käytön haitat Pythonissa

  1. Python-versioriippuvuus: Piclen tiedot ovat niin herkkiä tuottaneelle Python-versiolle. Yhdellä Python-versiolla luotu marinoitu objekti, jota ei ehkä voi poistaa eri versioilla.
  2. Ei luettavissa: Suolakurkun muoto on binaarinen, eikä sitä ole helppo lukea tai muokata. JSON- tai XML-muodossa olevia sopimuksia voidaan helposti muokata.
  3. Suuri datan tehottomuus: Suuret tietojoukot voivat hidastaa peittausta ja poistamista. Serialisointi saattaa olla sopivampi tällaisiin käyttötapauksiin.

Johtopäätös

Vaikka Python Pickle tarjoaa ominaisuuksia objektien serialisointiin, kehittäjät, jotka ylläpitävät rajoituksia, erityisesti työskennellessään eri Python-versioiden kanssa tai käsitellessään suuria tietojoukkoja. On tärkeää muistaa, että harkitse aina sovelluksesi erityistarpeita määrittääksesi, sopiiko ickle tai vaihtoehto, kuten JSON, XML, sarjoitukseen.