Comment compresser et décompresser des données en Python

Table des matières

Aujourd'hui, nous allons voir un tutoriel qui traitera de la compression et décompression de données en Python, une tâche très facile, puisque nous avons certains modules qui nous permettront d'effectuer ce travail de compression de données. Les bibliothèques sont : zlib, gzip, bz2, fichier zip Oui fichier tar.

Tout au long du tutoriel, nous verrons des exemples de certaines des bibliothèques pour apprendre à l'utiliser, c'est le meilleur moyen de comprendre comment cela fonctionne.

NoterIl utilisera la version 3 de Python.

Commençons par les exemples. Tous seront simples et faciles à comprendre.

1. Module Zlib


Nous allons voir quelques exemples avec cette bibliothèque, les deux seront faciles comme nous l'avons dit précédemment.

Exemple 1
Nous avons le code suivant, comment vous pouvez voir est bref :

 import zlib as zl line = b "Ceci n'est qu'un test pour que le tutoriel soit publié dans Solvetic" line_compress = zl.compress (line) print ("Uncompressed size% d"% len (line)) print (" Compressed size% d "% longueur (line_compress))
Nous compressons la ligne d'origine et montrons ce que l'un et l'autre occupent, obtenant la sortie suivante :

Nous allons maintenant voir comment décompresser dans l'exemple suivant.

Exemple 2
Dans le code suivant, nous allons compresser une ligne, l'afficher compressée et la décompresser pour l'afficher.

 import zlib as zl line = b "Testing 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"))
Nous utilisons la dernière ligne du code pour passer des octets à la chaîne (en utilisant utf-8 dans le décodage), puisque l'avant-dernière ligne affichera un b au début. La sortie du programme est la suivante :

Nous allons maintenant voir une autre bibliothèque telle que gzip.

2. Module Gzip


Les exemples vus ci-dessus sont valables pour cette bibliothèque, voyons l'exemple 1 le même que le précédent, ne changeant que la bibliothèque.

Exemple 1
Le code que nous avons est le suivant, le même que le précédent, en changeant zlib en gzip :

 import gzip line = b "Ceci n'est qu'un test pour que le tutoriel soit publié dans Solvetic" line_compress = gzip.compress (ligne) print ("Taille non compressée% d"% len (ligne)) print ("Taille compressée % d " % longueur (line_compress))
Si nous exécutons, nous avons la sortie suivante :

La compression pèse plus que la non compressée. Si nous changeons le texte pour un plus grand et exécutons :

Maintenant, si vous avez amélioré la taille, mais encore mieux compressé zlib, alors une capture est mise, la première exécution utilise zlib et la seconde gzip.

C'est parti pour l'exemple suivant, qui sera le dernier.

Exemple 2
Maintenant, nous allons écrire et lire à partir d'un fichier, le code est le suivant :

 import gzip fw = gzip.open ('test.txt.gz', 'wb') fw.write (b "Test gzip") fw.close () fr = gzip.open ('test.txt.gz', ' rb ') print (fr.read (). decode ("utf-8")) fr.close ()
Vous pouvez voir que nous ne traitons pas les exceptions possibles qui peuvent survenir, cela a été omis pour rendre l'exemple plus court et plus direct. Si nous exécutons le code, nous avons la sortie suivante :

Nous avons vu quelques exemples d'utilisation des librairies zlib et gzip, vous pouvez consulter la documentation officielle Python pour approfondir et mieux voir ces modules et ceux cités plus haut. Et au cas où vous seriez intéressé, nous vous laissons le lien vers un autre tutoriel sur Python : Sérialiser et désérialiser.

Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif
wave wave wave wave wave