La fermeture éclair est une manière élégante de compresser plusieurs fichiers et de les combiner en un seul. Cela permet non seulement d'économiser de l'espace de stockage, mais également de la bande passante lors du transfert d'un fichier sur un réseau. L'une des meilleures fonctionnalités de zip est qu'il fonctionne sur toutes les principales plates-formes: Windows, Linux et Mac.
Zip utilise une compression sans perte afin de conserver toutes les données lors de la compression et de la décompression. Vous pouvez également chiffrer et déchiffrer vos fichiers zip.
Avec autant de fonctionnalités à explorer, découvrez comment vous pouvez lire, compresser et décompresser des fichiers à l'aide du module Python zipfile.
Qu'est-ce que le module zipfile?
Vous pouvez utiliser le module standard zipfile pour manipuler des fichiers zip à l'aide de Python. Avec ce module, vous pouvez ouvrir et lire des fichiers zip, lire leurs métadonnées, créer un fichier zip, le compresser et décompresser des fichiers. Trois méthodes de compression sont disponibles: Deflate, Bzip2 et LZMA.
L'une des choses qui manquent au module est la capacité de gérer les fichiers multi-disques, mais il gère l'extension ZIP64. Il peut également déchiffrer les archives zip mais pas les chiffrer. En utilisant le module zipfile, vous pouvez obtenir des métadonnées de fichier zip telles que la date et l'heure de la modification. Vous pouvez également récupérer des détails tels que le système d'exploitation utilisé pour créer le fichier, la version de zip et la taille du fichier au format compressé et non compressé.
Comment compresser des fichiers avec Python
Vous pouvez compresser plusieurs fichiers dans une seule archive à l'aide du module zipfile de Python. Importez le Fichier zip module de la fichier zip package pour effectuer les opérations de compression requises. Importez également le os module pour sélectionner et enregistrer des fichiers.
Définir une fonction get_all_file_paths(). Il doit accepter un paramètre de répertoire contenant le chemin d'accès au dossier contenant les fichiers à compresser.
Initialisez une liste vide qui stockera la liste des chemins de fichiers. Utilisez une boucle for pour obtenir le contenu complet du répertoire cible à l'aide de la os.walk() fonction. Cette fonction récupère les noms de fichiers dans une arborescence de répertoires en se déplaçant le long de celle-ci dans une approche descendante ou ascendante. Pour chaque répertoire, la fonction renvoie un triplet contenant la racine, les répertoires et les fichiers.
La racine est une chaîne qui contient le chemin d'accès complet au répertoire. La liste dirs inclut tous les sous-répertoires contenus dans le répertoire. La liste des fichiers contient tous les fichiers présents dans le répertoire.
À l'intérieur de la boucle, déclarez un autre boucle pour parcourir la liste de fichiers. Utilisez le os.path.join() fonction pour combiner le nom du répertoire avec chaque nom de fichier pour créer un chemin complet. Ensuite, ajoutez ce nom de fichier complet à la liste que vous avez créée précédemment. Une fois cette opération terminée, retournez la liste des chemins de fichiers.
# importer les modules requis
depuis fichier zip importer Fichier zip
importer os# créer une fonction pour obtenir tous les chemins de fichiers
définitivementget_all_file_paths(annuaire):
# initialisation de la liste vide pour stocker les chemins de fichiers
chemin_fichier = []# naviguer dans les fichiers
pourracine, répertoires, des dossiersdansos.marcher(annuaire):
pour le nom de fichier dans les fichiers :
# joignez la racine et le nom de fichier pour créer un chemin de fichier complet
filepath = os.path.join (racine, nom de fichier)
chemin_fichier.ajouter(chemin du fichier)
# renvoie tous les chemins de fichiers
retour chemin_fichier
Enregistrez le chemin d'accès au dossier contenant les fichiers que vous souhaitez compresser dans une variable appelée répertoire. Appelez la fonction, get_all_file_paths() que vous avez créé précédemment et stockez la valeur renvoyée dans chemin_fichier.
Affichez un message à l'utilisateur pour lui faire savoir que ce sont les fichiers que le programme va compresser. Parcourez les fichiers et affichez leurs noms.
Transmettez le nom que vous voulez que votre fichier zip ait avec la spécification selon laquelle le programme renvoie un fichier inscriptible en utilisant l'instruction with pour gérer les exceptions. Itérez sur chaque fichier et utilisez la fonction write () sur le fichier inscriptible dans un fichier zip.
Lorsque l'opération est terminée, affichez un message expliquant que le programme a compressé tous les fichiers avec succès.
# chemin d'accès au dossier que vous souhaitez compresser
répertoire = './pythonzip'# fonction d'appel pour obtenir tous les chemins de fichiers dans le répertoire
file_paths = get_all_file_paths (répertoire)# impression de la liste de tous les fichiers que vous souhaitez compresser
imprimer('Liste des fichiers qui seront compressés :')pour file_name dans file_paths :
imprimer(nom de fichier)# écrire des fichiers dans un fichier zip
avec Fichier zip('mon_fichier.zip', 'w') comme zipper:
# écrire chaque fichier un par un
pour le fichier dans file_paths :
zipper.écrire(déposer)
imprimer('Tous les fichiers sont compressés !')
Comment décompresser des fichiers à l'aide de Python
La mise en œuvre de la décompression de fichiers à l'aide du module zipfile est beaucoup plus facile. Importez le fichier zip paquet de la Fichier zip module et stockez le nom du fichier zip que vous souhaitez extraire dans une variable. Utilisez l'instruction with pour gérer les exceptions et ouvrez le fichier que vous souhaitez extraire en mode lecture. Utilisez le printdir() fonction pour afficher la table des matières des fichiers présents dans le zip.
Affichez un message de progression indiquant que vous extrayez les fichiers et utilisez le extraire tout() fonction pour extraire le contenu du fichier zip dans le répertoire de travail courant. Vous pouvez également inclure un paramètre de chemin pour modifier le chemin d'accès où le programme extrait les fichiers.
Afficher un message à l'aide de la imprimer déclaration à la fin de l'opération.
# importer les modules requis
depuis fichier zip importer Fichier zip# passez le nom du fichier zip que vous souhaitez extraire
nom_fichier = "extrait.zip"# ouverture du fichier zip en mode lecture
avec ZipFile (nom_fichier, 'r') comme zipper:
# affiche le contenu du fichier zip
zipper.printdir()
# extraction de tous les fichiers
imprimer('Extrait en cours...')
zipper.extraire tout()
imprimer('Tous les fichiers sont extraits !')
En savoir plus sur les fichiers Zip
Les fichiers Zip ont gagné en popularité et sont utilisés depuis des décennies. Des sites Web populaires tels que GitHub et Google Drive vous permettent de télécharger une collection de fichiers sous forme d'archive zip. Le programme zip compresse un ensemble de fichiers en un seul package. Cela contraste avec un outil comme tar qui regroupe les fichiers mais ne les compresse pas.
Si vous souhaitez crypter vos fichiers à l'aide d'un algorithme plus efficace, les fichiers RAR sont la solution. RAR utilise l'algorithme AES-128 qui est meilleur que l'algorithme de déflation utilisé par les fichiers zip. En fin de compte, choisissez celui qui répond le mieux à vos besoins.