Dans cette leçon, nous étudierons comment nous pouvons utiliser Python gzip Module à lire et à écrire dans les fichiers compressés dans Python. La plus grande caractéristique que ce module nous fournit est que nous pouvons traiter les fichiers compressés comme des objets de fichiers normaux qui nous évitent de la complexité de la gestion des fichiers et de leur cycle de vie dans notre code et nous permet de nous concentrer sur la logique métier principale du programme.Le gzip Le module nous offre presque les mêmes fonctionnalités que les programmes GNU comme Gunzip et gzip.
Écrire des fichiers compressés avec Open ()
Nous commencerons par un exemple de base où nous pouvons créer un fichier GZIP et y écrire des données. Pour cela, nous devons faire un fichier et l'ouvrir avec le mode d'écriture afin que les données puissent être insérées dedans. Regardons un exemple de programme avec lequel nous pouvons écrire des données dans un fichier GZIP:
importer gzip
Importer IO
Importer un système d'exploitation
output_file = 'Linxhint_demo.SMS.gz '
write_mode = 'wb'
avec gzip.open (output_file, write_mode) en tant que sortie:
avec Io.TextiOWRAPPER (sortie, encoding = 'utf-8') comme Encode:
encoder.Écrire («Nous pouvons écrire tout ce que nous voulons dans le fichier.\ n ')
imprimer (output_file,
'contient', OS.stat (output_file).st_size, 'octets')
OS.system ('file -b --mime '.format (output_file))
Voici ce que nous récupérons avec cette commande:
Écriture dans un fichier zip
Si vous jetez maintenant un œil à la structure du dossier où vous avez exécuté ce script, il devrait y avoir un nouveau fichier nommé avec ce que nous avons fourni dans notre programme ci-dessus.
Écrire plusieurs lignes dans un fichier compressé
Nous pouvons également écrire plusieurs lignes ou en fait un certain nombre de lignes dans notre fichier GZIP de manière très similaire à ce que nous l'avons fait dans l'exemple précédent. Pour rendre cet exemple différent, nous utiliserons également le module Itertools. Regardons le programme d'échantillon:
importer gzip
Importer IO
Importer un système d'exploitation
Importer Itertools
output_file = 'Linxhint_demo.SMS.gz '
write_mode = 'wb'
avec gzip.open (output_file, write_mode) en tant que sortie:
avec Io.TextiOWRAPPER (Output, Encoding = 'UTF-8') AS ENC:
enclos.écrivains (
itertools.répéter ('Linuxhint, répéter la même ligne!.\ n ', 10)
)
OS.Système ('GZCAT LINXHINT_DEMO.SMS.gz ')
Voyons la sortie de cette commande:
Écrire plusieurs lignes
Lire des données compressées
Nous pouvons également lire le fichier compressé que nous avons créé dans le dernier exemple en utilisant le module GZIP avec un appel très simple ouvrir fonction:
importer gzip
Importer IO
Importer un système d'exploitation
file_name = 'linxhint_demo.SMS.gz '
file_mode = 'rb'
avec gzip.open (file_name, file_mode) en tant que Input_file:
avec Io.TextiOWRAPPER (Input_file, Encoding = 'UTF-8') comme déc:
Impression (déc.lire())
Voici ce que nous récupérons avec cette commande:
Lire un fichier GZIP
Streams de lecture
En raison du fait que les fichiers texte peuvent être de grande taille, il est intelligent d'ouvrir ces fichiers dans un flux plutôt que de charger le fichier complet dans un seul objet qui occupe beaucoup de mémoire du système et, dans certains cas, peut même provoquer le processus Pour s'écraser complètement. Regardons un exemple de programme qui lisait le fichier compressé donné dans un flux:
importer gzip
à partir d'Io Import Bytesio
importer binascii
mode_write = 'wb'
mode_read = 'rb'
non_compressée = B'Repeated Line x Times.\ n '* 8
print ('Données non compressées:', Len (non_compressée))
imprimer (non_compressé)
buf = byTesio ()
avec gzip.Gzipfile (mode = mode_write, fileoBj = buf) en tant que fichier:
déposer.écrire (non_compressé)
compressé = buf.getValue ()
print ('Données compressées:', Len (compressé))
imprimé (binascii.hexlify (compressé))
in_buffer = byTesio (compressé)
avec gzip.Gzipfile (mode = mode_read, fileoBj = in_buffer) en tant que fichier:
read_data = fichier.lire (Len (non_compressée))
print ('\ nreading it à nouveau:', Len (read_data))
print (read_data)
Voyons la sortie de cette commande:
Lire le fichier gzip dans un flux
Bien que le programme soit un peu long, nous venons en fait d'utiliser des modules Python ouvrir le fichier et diffuser le contenu sur la console avec un objet de lecteur tamponné.
Conclusion
Dans cette leçon, nous avons examiné comment nous pouvons utiliser le module Python GZIP pour compresser et décompresser les fichiers dans Python. La plus grande fonctionnalité que cette bibliothèque nous fournit est que nous pouvons traiter les fichiers compressés comme des objets de fichier normaux.
Lire la suite de messages basés sur Python ici.