logo

Module Shutil en Python

Dans ce tutoriel, nous découvrirons le module Shutil en Python. Nous verrons comment effectuer des opérations de fichier de haut niveau, telles que créer un nouveau fichier de copie, l'archiver et copier le contenu d'un fichier vers un autre fichier à l'aide du script Python. Faisons une introduction de base du module Shutil.

Module Python Shutil

Le module Python Shutil offre la possibilité d'effectuer l'opération de fichier de haut niveau. Il peut fonctionner avec l'objet fichier et nous offre la possibilité de copier et supprimer les fichiers. Il gère la sémantique de bas niveau telle que la création et la fermeture d'objets fichier après avoir effectué toutes les opérations.

Fonctionnement du module Shutil

Le module Python Shutil est livré avec les nombreuses méthodes intégrées. Nous explorerons quelques méthodes importantes. Pour commencer à travailler avec ce module, nous devons d'abord l'importer dans notre fichier Python actuel.

applications cachées sur cet appareil

Copier des fichiers

Ce module fournit le copie() fonction qui permet de copier une donnée d'un fichier à un autre. Les fichiers doivent être dans le même répertoire et le fichier de destination doit être accessible en écriture. Comprenons la syntaxe suivante.

Syntaxe-

 shutil.copyfile(source, destination, *, follow_symlinks = True) 

Paramètre:

Dans la syntaxe ci-dessus -

  • Le premier argument est source qui montre le chemin du fichier source.
  • Le deuxième argument est destination qui montre le chemin du fichier de destination.
  • Le troisième argument est facultatif ; la valeur par défaut de ce paramètre est true.
  • Il renvoie une chaîne qui montre le chemin du fichier nouvellement créé.

Comprenons l'exemple suivant.

Exemple -

 import os import shutil # Creating a new folder in the current directory os.mkdir('javatpoint') # It will show the empty folder print('Empty Folder:', os.listdir('javatpoint')) # testcompare.py file will be copied in the javatpoint folder shutil.copy('testcompare.py', 'javatpoint') # After coping the file folder shows the file print('File Copied Name:', os.listdir('javatpoint')) 

Sortir:

 Empty Folder: [] File Copied Name: ['testcompare.py'] 

Explication -

La fonction copy() prend le nom du répertoire comme argument. Ici le métadonnées n'est pas copié, le fichier copié sera considéré comme le fichier fraîchement créé. Cette méthode a également cloné toutes les autorisations du fichier. Une chose à noter est que si le fichier de destination existe déjà, il sera remplacé par le fichier source.

Voyons un autre exemple.

Exemple - 2 si une destination est un répertoire

 import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest = shutil.copy(source, destination) # Print the new path print(dest) 

Sortir:

 D:Python ProjectNewFilehello.txt 

Comme nous l'avons mentionné, la fonction copy() ne copie pas les métadonnées. Mais nous utiliserons le copie2() fonction qui nous permet de copier le fichier y compris ses métadonnées.

Exemple - 3 : Gestion des erreurs lors de l'utilisation de la méthode de copie

 # importing shutil module import shutil # It is a source path source = r'D:Python ProjectNewFolder' # It is a destination path destination = r'D:Python ProjectNewFolder' try: shutil.copy(source, destination) print('File copied successfully.') # If the given source and path are same except shutil.SameFileError: print('Source and destination represents the same file.') # If there is no permission to write except PermissionError: print('Permission denied.') # For other errors except: print('Error occurred while copying file.') 

Sortir:

 Source and destination represents the same file. 

La fonction copy2()

Cette fonction est similaire à la copie() fonction. Il peut également copier le contenu d'un fichier dans un autre, mais la seule différence est qu'il peut conserver les métadonnées du fichier. Comprenons la syntaxe suivante.

Syntaxe:

 shutil.copy2(source, destination, *, follow_symlinks = True) 

Paramètre:

Dans la syntaxe ci-dessus -

  • Le premier argument est source qui montre le chemin du fichier source.
  • Le deuxième argument est destination qui montre le chemin du fichier de destination.
  • Le troisième argument est facultatif ; la valeur par défaut de ce paramètre est true.
  • Il renvoie une chaîne qui montre le chemin du fichier nouvellement créé.

Comprenons l'exemple suivant.

Exemple -

 import os import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' metadata = os.stat(source) print(metadata) # In the newly created foloder destination = r'D:Python ProjectNewFile' # Storing the new path of hello.txt file dest1 = shutil.copy2(source, destination) metadata = os.stat(dest1) print('After copying file') print(metadata) # Print the new path print(dest1) 

Sortir:

 os.stat_result(st_mode=33206, st_ino=562949953459285, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815671, st_mtime=1622705607, st_ctime=1622705607) After copying file os.stat_result(st_mode=33206, st_ino=562949953459287, st_dev=3029671014, st_nlink=1, st_uid=0, st_gid=0, st_size=17, st_atime=1622815748, st_mtime=1622705607, st_ctime=1622706243) D:Python ProjectNewFilehello.txt 

La fonction shutdown.copyfile()

Cette méthode est utilisée pour copier le contenu du fichier source vers le fichier de destination, à l'exception des métadonnées. La source et la destination doivent avoir un fichier et le fichier de destination doit fournir l'autorisation d'écriture. Si un fichier de destination est déjà présent, il sera remplacé par le nouveau fichier, sinon créez un nouveau fichier.

Voyons la syntaxe suivante.

Syntaxe:

 shutil.copyfile(source, destination, *, follow_symlinks = True) 

Paramètres:

Dans la syntaxe ci-dessus -

  • Le premier argument est source qui montre le chemin du fichier source.
  • Le deuxième argument est destination qui montre le chemin du fichier de destination.
  • Le troisième argument est facultatif ; la valeur par défaut de ce paramètre est true.
  • Il renvoie une chaîne qui montre le chemin du fichier nouvellement créé.

Comprenons l'exemple suivant.

Exemple -

 import shutil # hello.txt file will be copied source = r'D:Python Projectjavatpointhello.txt' # In the newly created foloder destination = r'D:Python ProjectNewFilehi.txt' # Storing the new path of hello.txt file dest1 = shutil.copyfile(source, destination) # Print the new path print(dest1) 

Sortir:

 D:Python ProjectNewFilehi.txt 

La fonction shutdown.copytree()

Cette méthode est utilisée pour répliquer le répertoire complet. Il copie une arborescence de répertoires entière enracinée à la source vers le répertoire de destination. Le répertoire de destination ne doit pas déjà être présent. Voyons la syntaxe suivante.

Syntaxe:

 shutil.copytree(src, dst, symlinks = False, ignore = None, copy_function = copy2, igonre_dangling_symlinks = False) 

Paramètres:

Dans la syntaxe ci-dessus :

    src-Il montre le chemin du répertoire source.main -Il montre le chemin du répertoire de destination.liens symboliques (facultatif) -Il prend les valeurs booléennes – True et False. Cela dépend des métadonnées des liens ou des liens d'origine qui seront copiées dans la nouvelle arborescence.ignorer (facultatif) -Par défaut, il s'agit de None mais si l'ignorer est passé, il doit s'agir d'un appelable qui reçoit comme arguments. Le répertoire est visité par copytree().copy_function (facultatif) -Le copy2 est la valeur par défaut de ce paramètre. Le copie() La fonction peut être utilisée comme paramètre.ignore_dangling_symlinks (facultatif) -Ce paramètre est utilisé pour déclencher l'exception si le fichier pointé par le lien symbolique n'existe pas.
  • Il renvoie la chaîne qui représente le chemin du répertoire nouvellement créé.

Exemple -

 # importing shutil module import shutil # It is source path src = r'D:Python Projectjavatpoint' # It is destination path dest = r'D:Python ProjectNewFolder' # Copy the content of # source to destination dest1 = shutil.copytree(src, dest) # Now we print path of newly # created file print('Destination path:', dest1) 

Sortir:

 Destination path: D:Python ProjectNewFolder 

Le shutdown.rmtree()

Cette méthode est utilisée pour supprimer l’arborescence complète des répertoires. Voyons la syntaxe suivante.

Syntaxe:

 shutil.rmtree(path, ignore_errors=False, onerror=None) 

Paramètre-

Dans la syntaxe ci-dessus -

    chemin -Il représente le chemin du fichier. Un objet de type chemin est soit un objet chaîne, soit un objet octets.ignore_errors -La suppression sera ignorée si cet argument est vrai.une erreur -Si ignorer_erreurs est faux, ces erreurs sont gérées en appelant un gestionnaire spécifié par onerror.

Comprenons l'exemple suivant -

Exemple -

 import shutil import os # location location_dir = r'D:Python ProjectNewFile' # directory directory = r'D:Python Projectjavatpoint' # path path1 = os.path.join(location_dir, directory) # removing directory shutil.rmtree(path1) 

Le code ci-dessus supprimera le répertoire donné.

La fonction shutdown.which()

Le fermer. which() La fonction est utilisée pour obtenir le chemin d’une application exécutable qui serait exécutée si la cmd donnée était appelée. Il trouve le fichier dans le chemin indiqué. Voyons la syntaxe suivante.

Syntaxe:

 shutil.which(cmd, mode = os.F_OK | os.X_OK, path = None) 

Paramètres

Dans la syntaxe ci-dessus -

    cmd -C'est une chaîne qui représente le fichier.mode-Il spécifie le mode de fichier dans lequel la méthode doit être exécutée.chemin -Ce paramètre spécifie le chemin à utiliser.
  • Cette méthode renvoie le chemin d'accès à une application exécutable.

Comprenons l'exemple suivant.

Exemple -

méthode tostring java
 # importing shutil module import shutil # search the file cmd = 'python' # Using shutil.which() method locating = shutil.which(cmd) # Print result print(locating) 

Sortir:

 C:Pythonpython.EXE 

Il trouvera le fichier donné sur l'ordinateur, si le fichier est trouvé, il renvoie le chemin du fichier, sinon il renvoie Aucun.