Zlib Python

Zlib Python

Python Zlib-biblioteket tilbyr et Python-grensesnitt for C-Written Zlib-biblioteket, en generalisering på høyere nivå for deflaterte tapsfrie kompresjonsmetoder. Du kan bruke ZLIB -komprimeringsfunksjonen i kommersielle produkter fordi den er gratis og ikke patentert. Det er bærbart på flere plattformer fordi den bruker tapsfri komprimering, som forhindrer tap av data under komprimering og dekompresjon. En annen betydelig fordel er at denne kompresjonsmetoden ikke forstørrer dataene. Zlib -metodene for å komprimere og dekomprimere data, datastream og filer vil bli dekket i denne opplæringen.

Hvorfor bruke Zlib i Python?

Når det gjelder sikkerhet, spiller dette biblioteket/modulen en betydelig rolle. Tallrike applikasjoner trenger muligheten til å komprimere og dekomprimere vilkårlige data, inkludert strenger, filer og strukturert innhold i minnet. En av de beste funksjonene i ZLIB -modulen er dens kompatibilitet med GZIP -verktøyet/filformatet, som er en mye brukt og populær komprimeringsapplikasjon på UNIX.

Hvordan bruker vi Zlibs komprimerings- og dekompresjonsfunksjoner i Python?

Komprimering og dekompresjon er de to viktigste funksjonene som tilbys av ZLIB -biblioteket. Både komprimerings- og dekompresjonsoperasjoner kan utføres som engangsoperasjoner eller ved å dele dataene i biter, som du vil se fra en strøm av data. Følgende avsnitt vil forklare begge driftsmåter.

Komprimering i python zlib

Nå vil vi se hvordan du kan komprimere en datastreng, datastrenger og filer ved hjelp av ZLIB -biblioteket.

Komprimerer datastrenger

Å komprimere en streng er mulig ved hjelp av Zlib -bibliotekets komprimering () -funksjon. Denne funksjonens syntaks er ganske enkel og krever bare to argumenter.

Syntaks:

komprimering (data_string, nivå)

Her er Data_String strengen med data som skal komprimeres, og nivåargumentet kan spesifiseres med en heltallverdi som kan variere fra -1 til 9. Denne nivåparameteren bestemmer kompresjonsnivået. Hvis nivået er spesifisert som 1, vil kompresjonsnivået være det laveste/minimum. Imidlertid vil det være den raskeste. Det tregeste komprimeringsnivået, i.e., 9, produserer det høyeste/maksimale kompresjonsnivået. Standard, nivå 6, er representert med verdien -1. Hastighet og komprimering er balansert med standardverdien. Det er ingen komprimering på nivå 0.

Et eksempel på hvordan du bruker komprimeringsmetoden til en streng er gitt nedenfor:

Hvis vi spesifiserer nivåparameteren som 0, vil det ikke være noen komprimering:

Når du sammenligner resultatene, er kompresjonsnivået satt til 0 og 2. Du kan se en liten forskjell. I heksadesimal format, på nivå = 2, har funksjonen returnert en streng med lengde 62, mens på nivå 0 er en streng med lengde 68 returnert. Denne lengdeforskjellen kommer fordi ingen komprimering skjer på nivå 0.

Komprimerer datastrømmer

CompressObj () -metoden kan håndtere store datastrømmer. Et komprimeringsobjekt returneres av compressobj () -funksjonen.

Syntaks:

compressobj (nivå, metode, wbit, memlevel, strategi)

Bortsett fra strengdataparameteren, er det eneste skillet mellom parametrene til denne metoden og de for komprimering (). Følgende er mulige WBITS -verdier:

Verdiområde Vindusstørrelse logaritme Produksjon
+9 til +15 Base 2 Traileren og Zlib -overskriftene er inkludert.
+9 til -15 Representere Wbits absolutte verdi. Overskriften og traileren er ekskludert.
+25 til +31 Verdien er laveste fire biter. Overskriften og etterfølgende sjekksum er inkludert.

Metodeargumentet vil spesifisere komprimeringsalgoritmen. Standardalgoritmen, eller for øyeblikket tilgjengelig algoritme, tømmes. Strategiargumentet definerer kompresjonsinnstilling.

Følgende kode viser hvordan du bruker CompressObj () -funksjonen:

Vi brukte enkle strengdata som ikke er en stor datastrøm for å demonstrere hvordan compressobj () -funksjonen fungerer. Strengen "Jeg elsker å skrive python -koder" har blitt komprimert. Denne metoden brukes vanligvis når bekkene er for store eller vanskelige å lagre i minnet. Denne teknikken er avgjørende i større applikasjoner fordi vi kan tilpasse komprimeringen og bruke den til å komprimere data i biter/serier.

Komprimerer en fil

Filen blir komprimert ved bruk av komprimerings- () -funksjonen. De .DOCX -fil vil bli komprimert i eksemplet nedenfor.

Det beste komprimeringsnivået som tilbys av denne algoritmen, z beste komprimering, brukes i komprimeringsfunksjonen. Forholdet mellom lengden på komprimerte data og den opprinnelige datalengden brukes til å beregne datakomprimeringsnivået. Filen er 6% komprimert, som sett i utgangen.

Dekompresjon i Python Zlib

Nå vil vi se hvordan du dekomprimerer en datastreng, datastrenger og filer ved hjelp av ZLIB -biblioteket.

Dekomprimerer datastrenger

Decompress () -funksjonen gjør det enkelt å dekomprimere en streng med komprimerte data.

Syntaks:

Decompress (Data_String, WBIT, Bufsize)

Denne funksjonen dekomprimerer strengdata -byte. Historiebufferens størrelse kan settes ved hjelp av WBITS -parameteren. Det største vinduets størrelse brukes som standardinnstilling. Den komprimerte filens overskrift og trailer blir også bedt om å bli inkludert. Mulige verdier er:

Verdiområde Vindusstørrelse Inngang
+8 til +15 Base 2 Traileren og Zlib -overskriftene er inkludert.
-8 til -15 Wbits absolutte verdi. Rå strøm, topptekst og trailer er ekskludert.
+24 til +31 = 16 + (8 til 15) Verdien er laveste fire biter. Traileren og Zlib -overskriftene er inkludert.
+40 til +47 = 32 + (8 til 15) Verdien er laveste fire biter. gzip eller zlib -format

Bufsize -argumentet spesifiserer bufferstørrelsens startverdi. Nøkkelfunksjonen i dette argumentet er imidlertid at hvis det angitte ikke er nøyaktig, vil det automatisk bli justert hvis det er nødvendig med mer bufferstørrelse. Datastrengen som er komprimert kan dekomprimeres ved hjelp av følgende eksempel:

Dekomprimerende datastrømmer

Avhengig av kilden og størrelsen på dataene dine, kan dekomprimering av store datastrømmer kreve minnestyring. DECOMPRESSOBJ () -metoden lar deg dele en strøm av data i flere biter som vi kan dekomprimere separat hvis du ikke kan bruke alle ressursene eller ikke har nok minne.

Syntaks:

dekompressobj (wbits [, zdict])

For å dekomprimere de spesielle dataene, vil vi bruke dekompresjonsobjektet som dekompressobj () -funksjonen returnerer. WBITS -parameteren har de samme funksjonene som de som er beskrevet før for dekomprimering () -funksjonen.

Lengdekomprimerte strømmen er 34. Etter dekomprimering returneres strømlengden på 26, noe som var den faktiske størrelsen på datastrømmen vår.

Dekomprimerer en fil

Dataene i filen kan lett dekomprimeres, som vi har sett i tidligere eksempler. Den eneste forskjellen mellom dette eksemplet og den forrige er at Decompress () -funksjonen vil bli brukt etter å ha fått komprimerte data fra filen. Denne metoden er nyttig når data er kompakt nok til å passe praktisk i minnet.

Prøven.TXT -filen som inneholder strengen “Hello World I Love Python” har blitt lest. Vi valgte å bruke dekomprimere () i stedet for dekompressobj () fordi filen inneholder en liten streng.

Konklusjon

Vi diskuterte at når en applikasjon krever sikker komprimering, er Python Zlib -modulen nyttig. Selv om Zlib -biblioteket har mange funksjoner, har vi dekket noen av de vanligste. Komprimering () og dekomprimere () -funksjonene brukes til små data, mens compressobj () og dekompressobj () -funksjonene gir komprimering og dekompresjon av store datastrømmer, og gir så større fleksibilitet.