Kako komprimirati i dekomprimirati podatke u Pythonu

Danas ćemo vidjeti vodič koji će se baviti kompresija i dekompresija podataka u Pythonu, vrlo jednostavan zadatak, budući da imamo određene module koji će nam omogućiti obavljanje ovog posla komprimiranja podataka. Knjižnice su: zlib, gzip, bz2, zipfile Y tarfile.

Kroz vodič ćemo vidjeti primjere nekih knjižnica kako bismo naučili kako ih koristiti, to je najbolji način da shvatite kako radi.

BilješkaKoristit će verziju 3 Pythona.

Počnimo s primjerima. Svi će oni biti jednostavni i lako razumljivi.

1. Zlib modul


Vidjet ćemo nekoliko primjera s ovom bibliotekom, oba će biti laka kao što smo već rekli.

Primjer 1
Imamo sljedeći kôd, kako možete vidjeti je kratak:

 import zlib as zl line = b "Ovo je samo test za vodič koji će biti objavljen u Solveticu" line_compress = zl.compress (line) print ("Uncompressed size% d"% len (line)) print ("Compressed size% d "% len (line_compress))
Komprimiramo izvornu liniju i pokazujemo što jedno i drugo zauzima, dobivajući sljedeći izlaz:

Sada ćemo vidjeti kako dekomprimirati u sljedećem primjeru.

Primjer 2
U sljedećem kodu ćemo komprimirati liniju, pokazati je komprimiranom i raspakirati da bi se prikazala.

 uvesti zlib kao zl linija = b "Testiranje Python zlib-a" line_compress = zl.compress (line) print (line_compress) line_decompress = zl.decompress (line_compress) print (line_decompress) print (line_decompress.decode ("utf-8"))
Posljednji redak koda koristimo za prelazak iz bajtova u niz (koristeći utf-8 u dekodiranju), budući da će pretposljednji redak na početku prikazivati ​​b. Rezultat programa je sljedeći:

Sada idemo vidjeti drugu knjižnicu poput gzipa.

2. Gzip modul


Gore navedeni primjeri vrijede za ovu knjižnicu, pogledajmo primjer 1 isti kao i prethodni, samo mijenjajući knjižnicu.

Primjer 1
Kod koji imamo je sljedeći, isti kao i prethodni, mijenjajući zlib u gzip:

 import gzip line = b "Ovo je samo test za vodič koji će biti objavljen u Solveticu" line_compress = gzip.compress (line) print ("Uncompressed size% d"% len (line)) print ("Compressed size% d" % len (crta_kompresija))
Ako izvršimo, imamo sljedeći izlaz:

Kompresija teži više od nekomprimirane. Ako promijenimo tekst za veći i izvršimo:

Ako ste poboljšali veličinu, ali ipak bolje komprimirali zlib, tada se stavlja hvatanje, prva izvedba koristi zlib, a druga gzip.

Idemo na sljedeći primjer, koji će biti posljednji.

Primjer 2
Sada ćemo pisati i čitati iz datoteke, kôd je sljedeći:

 import gzip fw = gzip.open ('test.txt.gz', 'wb') fw.write (b "Testiranje gzipa") fw.close () fr = gzip.open ('test.txt.gz', ' rb ') print (fr.read (). decode ("utf-8")) fr.close ()
Vidite da se ne bavimo mogućim iznimkama koje bi mogle nastati, to je izostavljeno kako bi primjer bio kraći i izravniji. Ako pokrenemo kôd, imamo sljedeće rezultate:

Vidjeli smo neke primjere korištenja knjižnica zlib i gzip, možete se obratiti službenoj Python dokumentaciji kako biste produbili i bolje vidjeli ove module i one gore spomenute. A u slučaju da ste zainteresirani, ostavljamo vam vezu do drugog vodiča o Pythonu: Serialize and deserialize.

Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod
wave wave wave wave wave