Picturile lui Python

Picturile din Python sunt gustoase în sensul că reprezintă un obiect Python ca un șir de octeți. Multe lucruri se pot face cu acei octeți. De exemplu, le puteți stoca într-un fișier sau într-o bază de date sau le puteți transfera într-o rețea. 

Reprezentarea picantă a unui obiect Python este numită a file de muraturi. Prin urmare, fișierul îmbibat poate fi folosit în scopuri diferite, cum ar fi stocarea rezultatelor pentru a fi utilizate de un alt program Python sau scrierea de copii de rezervă. Pentru a obține obiectul original Python, pur și simplu unpickle acel șir de octeți.

Pentru a murat în Python, vom folosi murătură modul. După cum se menționează în documentație:

Modulul pickle implementează protocoalele binare pentru serializarea și de-serializarea unei structuri obiect Python. "Pickling" este procesul prin care o ierarhie a obiectelor Python este convertită într-un flux octet, iar "unpickling" este operația inversă, prin care un flux de octeți (dintr-un fișier binar sau un obiect octet) este transformat într-o ierarhie de obiecte. Decaparea (și decoltarea) este alternativ cunoscută sub numele de "serializare", "așezare" sau "aplatizare"; totuși, pentru a evita confuzia, termenii utilizați aici sunt "decaparea" și "decoltarea".

murătură modul ne permite să stocăm aproape orice obiect Python direct la un fișier sau șir, fără a fi nevoie să efectuați conversii. Ce murătură modulul de fapt efectuează este ceea ce este așa numit obiectul de serializare, adică transformarea obiectelor către și de la șiruri de octeți. Obiectul care va fi decapat va fi serializat într-un flux de octeți care poate fi scris într-un fișier, de exemplu, și restaurat la un punct ulterior.

instalarea murătură

murătură modulul vine de fapt deja asociat cu instalarea dvs. Python. Pentru a obține o listă a modulelor instalate, puteți să tastați următoarea comandă în promptul Python: ajutor ( „module“).

Deci, tot ce trebuie să faceți pentru a lucra cu murătură modul este de a murătura de import!

Crearea unui fișier de preluare

Din această secțiune, vom examina câteva exemple de decapare pentru a înțelege mai bine conceptul. Să începem prin crearea unui fișier de pickle dintr-un obiect. Obiectul nostru aici va fi a face listă pe care am făcut-o în tutorialul listei Python.

todo = ['write blog post', 'răspuns la email', 'citește într-o carte']

Pentru a mări obiectul listei (a face), putem face următoarele:

importați pickle todo = ['scrie blog post', 'răspuns la email', 'citit într-o carte'] pickle_file = file ('todo.pickle', 'w') pickle.dump (todo, pickle_file)

Observați că am făcut-o murătura de import pentru a putea utiliza murătură modul. Am creat, de asemenea, un fișier de pickle pentru a stoca obiectul murat în, și anume todo.pickle. depozit funcția scrie o reprezentare murat de a face la obiectul de fișier deschis pickle_file. Cu alte cuvinte, depozit funcția aici are două argumente: obiectul de murat, care este a face listă și un obiect de fișier în care dorim să scriem pickle-ul, care este todo.pickle.

Decuparea (restaurarea) datelor prelucrate

Spuneți că ne-ar plăcea să decodificăm (recuperați) datele macinate; în cazul nostru, acesta este a face listă. Pentru a face acest lucru, putem scrie următorul script:

importă pickle_file = fișier ('todo.pickle') todo = pickle.load (pickle_file) print (todo)

Scenariul de mai sus va scoate a face listă articole:

['scrie post pe blog', 'răspunde la e-mail', 'citește într-o carte']

După cum se menționează în documentație, încărcare (fișier) funcționează după cum urmează:

Citiți un șir din fișierul obiect fișier deschis și îl interpretați ca un flux de date de muratură, reconstrucând și returnând ierarhia obiectului original. Aceasta este echivalentă cu Unpickler (fișier) .load ().

Ciorbe ca siruri de caractere

În secțiunea de mai sus, am văzut cum putem scrie / încărca muraturi în / de la un fișier. Totuși, acest lucru nu este necesar. Vreau să spun că, dacă vrem să scriem / încărcăm murături, nu trebuie întotdeauna să ne ocupăm de fișiere - în schimb, putem lucra cu murături ca șiruri de caractere. Putem astfel face următoarele:

importați pickle todo = ['write blog post', 'răspuns la email', 'citește într-o carte'] pickled_data = pickle.dumps (todo) print (pickled_data)

Observați că am folosit splin (cu un "s" la sfârșit) funcția, care, conform documentației:

Returnează reprezentarea murat a obiectului ca șir, în loc să îl scrie într-un fișier.

Pentru a restaura datele de mai sus, putem folosi sarcini (string) funcție, după cum urmează:

restored_data = pickle.loads (pickled_data)

Conform documentației, ce loturile funcția este că aceasta:

Citește o ierarhie de obiecte murate dintr-un șir. Caracterele din șirul de caractere dincolo de reprezentarea obiectului murat sunt ignorate.

Depistarea mai multor obiecte

În exemplele de mai sus, ne-am ocupat cu decaparea și restaurarea (încărcarea) a unui singur obiect la un moment dat. În această secțiune, vă voi arăta cum putem face acest lucru pentru mai multe obiecte. Spuneți că avem următoarele obiecte:

nume = 'Abder' website = 'http://abder.io' english_french = 'hârtie': 'papier', 'stilou' 'abder', 4,0) # tuple

Dacă doriți să aflați mai multe despre dicționarele și tuplele Python, verificați următoarele tutoriale:

  • O reîmprospătare netedă pe dicționarele Python
  • Un reîmprospătător Smooth pentru fișierele lui Python

Putem purta pur și simplu obiectele de mai sus executând o serie de depozit funcții, după cum urmează:

import numele de pickle = 'Abder' website = 'http://abder.io' english_french = 'hârtie': 'papier', 'pen': 'stylo', 'car': 'voiture' 31, 'abder', 4.0) # tuple pickled_file = deschide ('pickled_file.pickle', 'w') pickle.dump (nume, pickled_file) pickle.dump (site, pickled_file) pickle.dump (english_french, pickled_file) pickle. dump (tup, pickled_file)

Aceasta va muri toate cele patru obiecte din fișierul de murături pickled_file.pickle.

Există un alt mod minunat de a scrie scriptul de mai sus folosind Pickler clasa în murătură modul, după cum urmează:

de la pickle import Pickler name = 'Abder' website = 'http://abder.io' english_french = 'hârtie': 'papier', 'pen': 'stylo', 'car': 'voiture' = (31, 'abder', 4.0) # tuple pickled_file = deschide ('pickled_file.pickle', 'w') p = Pickler (pickled_file) p.dump (nume); p.dump (site-ul); p.dump (english_french); p.dump (tup)

Pentru a restabili (încărca) datele originale, putem pur și simplu utiliza mai mult de unul sarcină funcție, după cum urmează:

import pickle_file = open ('pickled_file.pickle') nume = pickle.load (pickled_file) site = pickle.load (pickled_file) english_french = pickle.load (pickled_file) tup = pickle.load (pickled_file) print (' ) imprimare (denumire) print ('Website:') print (website) print ('Englsh to French:') print (english_french)

Rezultatul scriptului de mai sus este:

Nume: Abder Website: http://abder.io Englsh în franceză: 'car': 'voiture', 'pen': 'stylo', 'paper': 'papier' , 4,0)

Ca și în cazul Pickler class, putem rescrie scriptul de mai sus folosind Unpickler clasa în murătură modul, după cum urmează:

din importul de muraturi Unpickler pickled_file = open ('pickled_file.pickle') u = Unpickler (pickled_file) name = u.load (); site = u.load (); english_french = u.load (); tup = u.load () print ('Nume:') print (nume) print ('Website:') print (website) Print (TUP)

Rețineți că variabilele trebuie să fie scrise și citite în aceeași ordine pentru a obține ieșirea dorită. Pentru a evita orice probleme aici, putem folosi un dicționar pentru administrarea datelor, după cum urmează:

import numele de pickle = 'Abder' website = 'http://abder.io' english_french = 'hârtie': 'papier', 'pen': 'stylo', 'car': 'voiture' 31, 'abder', 4,0) # tuple pickled_file = deschide ('pickled_file.pickle', 'w') data = 'name': name, 'website': website_french_dictionary ': english_french,' tuple '  pickle.dump (date, pickled_file)

Pentru a restabili (încărca) datele marcate în scriptul de mai sus, putem face următoarele:

importul de muraturi pickled_file = open ('pickled_file.pickle') date = pickle.load (pickled_file) nume = date ['nume'] site = data ['website'] english_french = data ['english_french_dictionary'] tup = '] print (' Nume: ') print (denumire) print (' Website: ') print (website) print (english - french)

Ciorbe și panda

Păi, aceasta pare o combinație interesantă. Dacă vă întrebați ce sunt Panda, puteți afla mai multe despre ele din tutorialul introductiv Pandas. Structura de date de bază a ursi panda se numește DataFrame, o structură de date tabulară compusă din coloane și rânduri comandate.

Să luăm un exemplu DataFrame din tutorialul Pandas:

Pandele de import ca pd name_age = 'Nume': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] = pd.DataFrame (name_age)

În scopul de a murat noastre DataFrame, putem folosi to_pickle () funcție, după cum urmează:

data_frame.to_pickle ( 'my_panda.pickle')

Pentru a restabili (încărcați) marina DataFrame, putem folosi read_pickle () funcție, după cum urmează:

restore_data_frame = pd.read_pickle ('my_panda.pickle')

Punând tot ceea ce am menționat în această secțiune, acest scenariu care mulează și încarcă un obiect pandas arata astfel:

Pandele de import ca pd name_age = 'Nume': ['Ali', 'Bill', 'David', 'Hany', 'Ibtisam'], 'Age': [32, 55, 20, 43, 30] = pd.DataFrame (name_age) data_frame.to_pickle ('my_panda.pickle') restart_data_frame = pd.read_pickle ('my_panda.pickle') print (restore_data_frame)

Concluzie

În acest tutorial, am abordat un modul interesant numit murătură. Am văzut cât de ușor acest modul ne permite să stocăm obiecte Python în scopuri diferite, cum ar fi utilizarea obiectului cu un alt program Python, transferarea obiectului într-o rețea, salvarea obiectului pentru utilizare ulterioară etc. Putem purta pur și simplu obiectul Python și dezarhivați-o (încărcați) când vrem să restauram obiectul original.

Nu ezitați să vedeți ceea ce avem la dispoziție pentru vânzare și pentru a studia pe piață și nu ezitați să puneți întrebări și să oferiți feedback-ul dvs. valoros utilizând feedul de mai jos.

Cod