Kaip suspausti ir išpakuoti duomenis „Python“

Šiandien mes pamatysime pamoką, kurioje bus nagrinėjama duomenų glaudinimas ir išspaudimas „Python“, labai lengva užduotis, nes turime tam tikrus modulius, kurie leis mums atlikti šį duomenų glaudinimo darbą. Bibliotekos yra: zlib, gzip, bz2, zipfile Y tarfile.

Visoje pamokoje matysime kai kurių bibliotekų pavyzdžius, kaip išmokti ja naudotis, tai yra geriausias būdas suprasti, kaip tai veikia.

PastabaJis naudos 3 „Python“ versiją.

Pradėkime nuo pavyzdžių. Visi jie bus paprasti ir lengvai suprantami.

1. Zlib modulis


Su šia biblioteka pamatysime porą pavyzdžių, abu bus lengvi, kaip minėjome anksčiau.

1 pavyzdys
Turime šį kodą, kurį galite pamatyti trumpai:

 importuoti zlib kaip zl line = b "Tai tik testas, skirtas mokymui, kuris bus paskelbtas Solvetic" line_compress = zl.compress (line) print ("Nesuspaustas dydis% d"% len (line)) print ("Suspaustas dydis% d "% len (line_compress))
Mes suspaudžiame pradinę eilutę ir parodome, ką vienas ir kitas užima, ir gauname tokią išvestį:

Dabar šiame pavyzdyje pamatysime, kaip išspausti.

2 pavyzdys
Toliau pateiktame kode mes suglaudinsime liniją, parodysime ją suspaustą ir išpakuosime, kad ją parodytume.

 importuoti zlib kaip zl line = b "Python zlib testavimas" line_compress = zl.compress (line) print (line_compress) line_decompress = zl.decompress (line_compress) print (line_decompress) print (line_decompress.decode ("utf-8"))
Mes naudojame paskutinę kodo eilutę, kad pereitume nuo baitų prie eilutės (dekoduojant naudojame utf-8), nes priešpaskutinė eilutė pradžioje parodys b. Programos išvestis yra tokia:

Dabar einame pamatyti kitos bibliotekos, tokios kaip gzip.

2. Gzip modulis


Pirmiau pateikti pavyzdžiai tinka šiai bibliotekai, pažiūrėkime 1 pavyzdį, kaip ir ankstesnį, tik pakeisdami biblioteką.

1 pavyzdys
Kodas, kurį turime, yra toks pat, kaip ir ankstesnis, keičiant zlib į gzip:

 importuoti gzip line = b "Tai tik testas, skirtas mokymui, kuris bus paskelbtas" Solvetic "" line_compress = gzip.compress (line) print ("Nesuspaustas dydis% d"% len (line)) print ("Suspaustas dydis% d" % len (line_compress))
Jei vykdysime, turėsime tokią išvestį:

Suspaudimas sveria daugiau nei nesuspaustas. Jei pakeisime tekstą į didesnį ir vykdysime:

Dabar, jei patobulinote dydį, bet vis tiek geriau suspaudžiate „zlib“, užfiksuojama, pirmą kartą vykdant naudojamas „zlib“, o antrame - „gzip“.

Paimkime šį pavyzdį, kuris bus paskutinis.

2 pavyzdys
Dabar mes rašysime ir skaitysime iš failo, kodas yra toks:

 importuoti gzip fw = gzip.open ('test.txt.gz', 'wb') fw.write (b "Gzip testavimas") fw.close () fr = gzip.open ('test.txt.gz', ' rb ') print (fr.read (). dekoduoti ("utf-8")) fr.close ()
Matote, kad mes nesvarstome galimų išimčių, kurios gali atsirasti, tai buvo praleista, kad pavyzdys būtų trumpesnis ir tiesioginis. Jei vykdysime kodą, turėsime tokią išvestį:

Mes matėme keletą zlib ir gzip bibliotekų naudojimo pavyzdžių, galite susipažinti su oficialia „Python“ dokumentacija, kad gilintumėte ir geriau matytumėte šiuos ir aukščiau paminėtus modulius. Ir jei jus domina, mes paliekame jums nuorodą į kitą „Python“ vadovėlį: serijuotis ir deserializuoti.

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką
wave wave wave wave wave