Python

module Python gzip

module Python gzip

Dans cette leçon, nous étudierons comment nous pouvons utiliser Python gzip module pour lire et écrire dans les fichiers compressés en Python. La plus grande fonctionnalité que ce module nous offre est que nous pouvons traiter les fichiers compressés comme des objets de fichier normaux, ce qui nous évite 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 module nous fournit presque les mêmes fonctionnalités que les programmes GNU comme fermeture éclair et gzip.

Écrire des fichiers compressés avec open()

Nous allons commencer par un exemple de base où nous pouvons créer un fichier gzip et y écrire des données. Pour cela, nous devons créer un fichier et l'ouvrir en mode écriture afin que des données puissent y être insérées. Regardons un exemple de programme avec lequel nous pouvons écrire des données dans un fichier gzip :

importer gzip
importer io
importer le système d'exploitation
output_file = 'linxhint_demo.SMS.gz'
write_mode = 'wb'
avec gzip.open(output_file, write_mode) en sortie :
avec io.TextIOWrapper(sortie, encodage='utf-8') comme encodage :
encoder.write('Nous pouvons écrire tout ce que nous voulons dans le fichier.\n')
print(output_file,
'contient', os.stat(fichier_sortie).st_size, 'octets')
système d'exploitation.system('fichier -b --mime '.format (fichier_sortie))

Voici ce que nous obtenons avec cette commande :

Écriture dans un fichier zip

Si vous jetez maintenant un œil à la structure des dossiers 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.

Ecrire plusieurs lignes dans un fichier compressé

Nous pouvons également écrire plusieurs lignes ou en fait n'importe quel nombre de lignes dans notre fichier gzip d'une manière très similaire à celle de l'exemple précédent. Pour rendre cet exemple différent, nous utiliserons également le module itertools. Regardons l'exemple de programme :

importer gzip
importer io
importer le système d'exploitation
importer des itertools
output_file = 'linxhint_demo.SMS.gz'
write_mode = 'wb'
avec gzip.open(output_file, write_mode) en sortie :
avec io.TextIOWrapper(sortie, encodage='utf-8') comme enc :
enc.lignes d'écriture(
itertools.repeat('LinuxHint, répétition de la même ligne!.\n', 10)
)
système d'exploitation.system('gzcat linxhint_demo.SMS.gz')

Voyons le résultat de cette commande :

Ecrire plusieurs lignes

Lecture de 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 à ouvert une fonction:

importer gzip
importer io
importer le système d'exploitation
file_name = 'linxhint_demo.SMS.gz'
file_mode = 'rb'
avec gzip.open(file_name, file_mode) comme input_file :
avec io.TextIOWrapper(input_file, encoding='utf-8') comme déc :
print(déc.lis())

Voici ce que nous obtenons avec cette commande :

Lire un fichier gzip

Lecture de flux

En raison du fait que les fichiers texte peuvent être très volumineux, il est judicieux 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 système et peut même, dans certains cas, provoquer le processus. s'écraser complètement. Regardons un exemple de programme qui lit le fichier compressé donné dans un flux :

importer gzip
depuis io importer BytesIO
importer des fichiers binaires
mode_write = 'wb'
mode_read = 'rb'
non_compressed = b'Ligne répétée x fois.\n' * 8
print('Données non compressées :', len(non_compressed))
print(non_compressé)
buf = OctetsIO()
avec gzip.GzipFile(mode=mode_write, fileobj=buf) en tant que fichier :
déposer.écrire (non_compressé)
compressé = buf.obtenirvaleur()
print('Données compressées :', len(compressé))
imprimer(binascii.hexlify (compressé))
in_buffer = BytesIO (compressé)
avec gzip.GzipFile(mode=mode_read, fileobj=in_buffer) en tant que fichier :
read_data = fichier.read(len(non_compressed))
print('\nLe relecture :', len(read_data))
imprimer (lecture_données)

Voyons le résultat de cette commande :

Lire un fichier gzip dans un flux

Bien que le programme soit un peu long, nous avons simplement utilisé des modules Python pour ouvrir le fichier et diffuser le contenu sur la console avec un objet lecteur mis en mémoire tampon.

Conclusion

Dans cette leçon, nous avons vu comment utiliser le module Python gzip pour compresser et décompresser des fichiers en Python. La plus grande fonctionnalité que cette bibliothèque nous offre est que nous pouvons traiter les fichiers compressés comme des objets de fichier normaux.

Lisez plus de messages basés sur Python ici.

Examen de la souris sans fil Microsoft Sculpt Touch
J'ai lu récemment sur le Microsoft Sculpt Touch souris sans fil et j'ai décidé de l'acheter. Après l'avoir utilisé pendant un certain temps, j'ai déci...
Trackpad et pointeur de souris à l'écran AppyMouse pour tablettes Windows
Les utilisateurs de tablettes ratent souvent le pointeur de la souris, surtout lorsqu'ils ont l'habitude d'utiliser les ordinateurs portables. Les sma...
Le bouton central de la souris ne fonctionne pas sous Windows 10
le bouton central de la souris vous aide à faire défiler de longues pages Web et des écrans contenant beaucoup de données. Si cela s'arrête, et bien v...