Utiliser python pour compresser un fichier et un répertoire

Un fichier compressé contient de nombreux fichiers, répertoire et sous-répertoires. De nombreuses applications sont disponibles pour créer un fichier compressé de n’importe quel grand fichier ou répertoire et récupérer des fichiers ou des dossiers en extrayant un fichier compressé. Lorsque nous voulons transférer un fichier ou un dossier volumineux sur Internet, il est préférable de compresser le contenu avant le transfert. Cela rend la tâche plus rapide. Vous pouvez utiliser des scripts python pour compresser et extraire tout fichier ou répertoire volumineux. Le module zipfile de python est utilisé pour effectuer cette tâche. Comment vous pouvez utiliser python3 pour compresser tout fichier ou répertoire est montré dans ce tutoriel en utilisant divers exemples.

Créer un nouveau fichier nommé ‘zipcode1.py’ et ajouter le code suivant. le module zipfile est importé pour compresser le fichier. temp.zip est assigné comme nom de fichier zip avec le mode d’écriture et ensuite, le nom de fichier original, temp.txt et le type de compression sont donnés comme paramètres dans la méthode d’écriture.

import zipfile
zip_file = zipfile.ZipFile(‘temp.zip’, ‘w’)
zip_file.write(‘temp.txt’, compress_type=zipfile.ZIP_DEFLATED)
zip_file.close()

Exécuter le script

$ python3 zipcode1.py

La taille de temp.txt est de 27 octets et après compression, la taille de temp.zip est de 2 octets.

Exemple-2 : Compression d’un répertoire particulier

Créer un nouveau fichier nommé ‘zipcode2.py’ et ajouter le code suivant. Un répertoire peut contenir de nombreux fichiers, dossiers et sous-dossiers. Pour lire le contenu du répertoire, le module os de python est importé avec le module zipfile pour compresser le répertoire. Dans ce script, le répertoire mydir est utilisé pour la compression.

# Importer les modules requis
import os
import zipfile
# Déclarer la fonction pour retourner tous les chemins de fichiers du répertoire particulier
def retrieve_file_paths(dirName):
# configurer la variable des chemins de fichiers
filePaths =
# Lire tous les répertoires, sous-répertoires et listes de fichiers
pour la racine, les répertoires, les fichiers dans os.walk(dirName):
for filename in files:
# Créer le chemin de fichier complet en utilisant le module os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# Retourner tous les chemins
return filePaths
# Déclarer la fonction principale
def main() :
# Assigner le nom du répertoire à zipper
dir_name = ‘mydir’
# Appeler la fonction pour récupérer tous les fichiers et dossiers du répertoire assigné
filePaths = retrieve_file_paths(dir_name)
# imprimer la liste de tous les fichiers à zipper
print(‘La liste suivante de fichiers sera zippée :’)
for fileName in filePaths:
print(fileName)
# écriture des fichiers dans un fichier zip
zip_file = zipfile.ZipFile(dir_name+’.zip’, ‘w’)
with zip_file:
# écriture de chaque fichier un par un
for file in filePaths:
zip_file.write(file)
print(dir_name+’.le fichier zip est créé avec succès!’)
# Appeler la fonction main
if __name__ == “__main__”:
main()

Exécuter le script

$ python3 zipcode2.py

La taille de mondir est de 21 octets et après compression, la taille de mondir.zip est de 2 octets.

Exemple-3 : Compression d’un répertoire donné par un argument de ligne de commande

Créer un nouveau fichier nommé ‘zipcode3.py’ et ajouter le code suivant. Pour lire la valeur de la ligne de commande, un autre module python sys est importé avec les modules os et zipfile.

# importer les modules requis
import os
import sys
import zipfile
# Déclarer la fonction pour retourner tous les chemins de fichiers d’un répertoire particulier
def retrieve_file_paths(dirName):
# configurer la variable des chemins de fichiers
filePaths =
# Lire toutes les listes de répertoires, sous-répertoires et fichiers
pour la racine, les répertoires, les fichiers dans os.walk(dirName):
for filename in files:
# Créer le chemin de fichier complet en utilisant le module os.
filePath = os.path.join(root, filename)
filePaths.append(filePath)
# Retourner tous les chemins
return filePaths
# Déclarer la fonction main
def main():
# Vérifier que deux arguments sont donnés au moment de l’exécution du script
if len (sys.argv) != 2 :
print (“Vous avez entré le nom du répertoire à zipper”)
sys.exit (1)
# Définir le nom du répertoire à partir de l’argument de commande
dir_name = sys.argv
# Définir le nom du fichier zip
zipFileName = dir_name + “.zip”
# Appeler la fonction pour récupérer tous les fichiers et dossiers du répertoire attribué
filePaths = retrieve_file_paths(dir_name)
# Imprimer la liste des fichiers à zipper
print(‘La liste suivante de fichiers sera zippée:’)
for fileName in filePaths:
print(fileName)
# écrire les fichiers et dossiers dans un fichier zip
zip_file = zipfile.ZipFile(zipFileName, ‘w’)
with zip_file:
# écrire chaque fichier séparément
for file in filePaths:
zip_file.write(file)
print(zipFileName+’ le fichier est créé avec succès !’)
# Appeler la fonction main
if __name__ == “__main__”:
main()

Exécuter le script

$ python3 zipcode3.py

test est donné comme nom de répertoire dans l’argument de la ligne de commande. La taille de test est de 21 octets et après compression, la taille de test.zip est de 2 octets.

J’espère que, ce tutoriel vous aidera à utiliser python pour compresser n’importe quel fichier ou répertoire.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.