Gegevens comprimeren en decomprimeren in Python

Vandaag gaan we een tutorial zien die gaat over de datacompressie en decompressie in Python, een zeer gemakkelijke taak, omdat we bepaalde modules hebben waarmee we dit werk van het comprimeren van gegevens kunnen uitvoeren. De bibliotheken zijn: zlib, gzip, bz2, Zip bestand Y tarfile.

In de hele tutorial zullen we voorbeelden zien van enkele bibliotheken om te leren hoe het te gebruiken, het is de beste manier om te begrijpen hoe het werkt.

OpmerkingHet zal gebruik maken van versie 3 van Python.

Laten we beginnen met de voorbeelden. Ze zullen allemaal eenvoudig en gemakkelijk te begrijpen zijn.

1. Zlib-module


We gaan een paar voorbeelden zien met deze bibliotheek, beide zullen gemakkelijk zijn zoals we eerder zeiden.

voorbeeld 1
We hebben de volgende code, hoe u kunt zien is kort:

 import zlib as zl line = b "Dit is slechts een test voor de tutorial die in Solvetic wordt gepubliceerd" line_compress = zl.compress (line) print ("Uncompressed size% d"% len (line)) print (" Compressed size% d "% len (line_compress))
We comprimeren de originele regel en laten zien wat de een en de ander inneemt, waardoor de volgende uitvoer wordt verkregen:

Nu gaan we in het volgende voorbeeld zien hoe u kunt decomprimeren.

Voorbeeld 2
In de volgende code gaan we een regel comprimeren, gecomprimeerd weergeven en uitpakken om het weer te geven.

 import zlib as zl line = b "Test Python zlib" line_compress = zl.compress (line) print (line_compress) line_decompress = zl.decompress (line_compress) print (line_decompress) print (line_decompress.decode ("utf-8"))
We gebruiken de laatste regel van de code om van bytes naar string te gaan (utf-8 gebruiken bij het decoderen), aangezien de voorlaatste regel een b aan het begin zal tonen. De output van het programma is als volgt:

We gaan nu naar een andere bibliotheek zoals gzip.

2. Gzip-module


De bovenstaande voorbeelden zijn geldig voor deze bibliotheek, laten we voorbeeld 1 hetzelfde bekijken als de vorige, alleen de bibliotheek wijzigen.

voorbeeld 1
De code die we hebben is de volgende, dezelfde als de vorige, waarbij zlib wordt gewijzigd in gzip:

 import gzip line = b "Dit is slechts een test voor de tutorial die in Solvetic wordt gepubliceerd" line_compress = gzip.compress (line) print ("Uncompressed size% d"% len (line)) print ("Compressed size % d " % len (line_compress))
Als we uitvoeren, hebben we de volgende uitvoer:

Compressie weegt meer dan ongecomprimeerde. Als we de tekst wijzigen voor een grotere en uitvoeren:

Als je nu de grootte hebt verbeterd, maar zlib nog beter comprimeert, dan wordt er een opname geplaatst, de eerste uitvoering gebruikt zlib en de tweede gzip.

Laten we gaan voor het volgende voorbeeld, dat het laatste zal zijn.

Voorbeeld 2
Nu gaan we schrijven en lezen uit een bestand, de code is als volgt:

 import gzip fw = gzip.open ('test.txt.gz', 'wb') fw.write (b "Gzip testen") fw.close () fr = gzip.open ('test.txt.gz', ' rb ') print (fr.read (). decode ("utf-8")) fr.close ()
U ziet dat we de eventuele uitzonderingen die zich kunnen voordoen niet behandelen, dit is weggelaten om het voorbeeld korter en directer te maken. Als we de code uitvoeren, hebben we de volgende uitvoer:

We hebben enkele voorbeelden gezien van het gebruik van de zlib- en gzip-bibliotheken, u kunt de officiële Python-documentatie raadplegen om deze modules en de hierboven genoemde modules te verdiepen en beter te bekijken. En voor het geval je geïnteresseerd bent, laten we je de link achter naar een andere tutorial over Python: serialiseren en deserialiseren.

Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven
wave wave wave wave wave