Utilisez Python pour zip un fichier et un répertoire

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

Exemple-1: compression d'un seul fichier

Créer un nouveau fichier nommé 'zipcode1.py ' et ajouter le code suivant. fichier zip le module est importé pour compresser le fichier. temp.zipper est attribué comme nom de fichier zip avec le mode écriture et ensuite, le nom de fichier d'origine, temp.SMS et le type de compression sont donnés sous forme de paramètres dans la méthode d'écriture.

importer zipfile
zip_file = zipfile.Zipfile ('temp.zip ',' w ')
fichier zip.écrire ('temp.txt ', compress_type = zipfile.Zip_deflated)
fichier zip.fermer()

Exécutez le script

$ Python3 Zipcode1.py

La taille de temp.SMS est 27 octets Et après compression, la taille de temp.zipper est 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, OS Le module de Python est importé avec fichier zip module pour comprimer le répertoire. Dans ce script, mydir Le répertoire est utilisé pour la compression.

# Importer des modules requis
Importer un système d'exploitation
importer zipfile
# Déclarez la fonction pour renvoyer tous les chemins de fichier du répertoire particulier
def rétrive_file_paths (dirname):
# Variable des chemins de fichier de configuration
filepaths = []
# Lisez tous les répertoires, sous-répertoires et listes de fichiers
pour root, répertoires, fichiers dans le système d'exploitation.Walk (dirname):
pour le nom de fichier dans les fichiers:
# Créez le FilePath complet en utilisant le module OS.
filepath = os.chemin.rejoindre (root, nom de fichier)
filets.annexe (filepath)
# Renvoie tous les chemins
Retour Filepaths
# Déclarer la fonction principale
def main ():
# Attribuez le nom du répertoire à Zip
dir_name = 'mydir'
# Appelez la fonction pour récupérer tous les fichiers et dossiers du répertoire attribué
filepaths = rétrive_file_paths (dir_name)
# Impression de la liste de tous les fichiers à zipper
Print ('La liste des fichiers suivante sera zippée:')
pour le nom de fichier dans Filepaths:
imprimer (nom de fichier)
# écrire des fichiers à un zipfile
zip_file = zipfile.Zipfile (dir_name + '.zip ',' w ')
avec zip_file:
# Écrivant chaque fichier un par un
Pour le fichier dans Filepaths:
fichier zip.écrire (fichier)
print (dir_name + '.Le fichier zip est créé avec succès!')
# Appelez la fonction principale
Si __name__ == "__main__":
principal()

Exécutez le script

$ Python3 Zipcode2.py

La taille de mydir est 21 octets Et après compression, la taille de mydir.zipper est 2 octets.

Exemple-3: Comprimer un répertoire donné par l'argument de la 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 système est importé avec OS et fichier zip modules.

# Importer des modules requis
Importer un système d'exploitation
importer sys
importer zipfile
# Déclarez la fonction pour renvoyer tous les chemins de fichier d'un répertoire particulier
def rétrive_file_paths (dirname):
# Variable des chemins de fichier de configuration
filepaths = []
# Lisez tous les répertoires, sous-répertoires et listes de fichiers
pour root, répertoires, fichiers dans le système d'exploitation.Walk (dirname):
pour le nom de fichier dans les fichiers:
# Créez le FilePath complet en utilisant le module OS.
filepath = os.chemin.rejoindre (root, nom de fichier)
filets.annexe (filepath)
# Renvoie tous les chemins
Retour Filepaths
# Déclarer la fonction principale
def main ():
# Vérifiez que deux arguments sont présentés au moment de l'exécution du script
Si Len (Sys.argv) != 2:
print ("vous avez entre le nom du répertoire à zip")
système.sortie (1)
# Définissez le nom du répertoire de l'argument de commande
dir_name = sys.Argv [1]
# Définissez le nom du fichier zip
zipfilename = dir_name + ".zipper"
# Appelez la fonction pour récupérer tous les fichiers et dossiers du répertoire attribué
filepaths = rétrive_file_paths (dir_name)
# Imprimez la liste des fichiers à zipper
Print ('La liste des fichiers suivante sera zippée:')
pour le nom de fichier dans Filepaths:
imprimer (nom de fichier)
# Écrivez des fichiers et des dossiers à un zipfile
zip_file = zipfile.Zipfile (zipfilename, 'w')
avec zip_file:
# Écrivez chaque fichier séparément
Pour le fichier dans Filepaths:
fichier zip.écrire (fichier)
Print (le fichier ZipFileName + 'est créé avec succès!')
# Appelez la fonction principale
Si __name__ == "__main__":
principal()

Exécutez 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 21 octets Et après compression, la taille de test.zipper est 2 octets.

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