Comment copier un fichier en Python

Azaz Farooq 30 janvier 2023
  1. Shutil copyfile() Méthode pour copier un fichier en Python
  2. Shutil copy() Méthode pour copier un fichier avec des permissions
  3. Comparaison entre la méthode copy() et la méthode copyfile()
  4. copyfileobj() Méthode pour copier un objet de fichier
  5. Méthode copy2() pour préserver les métadonnées
  6. Conclusion des méthodes de copie d’un fichier en Python
Comment copier un fichier en Python

Python est livré avec plusieurs modules prêts à l’emploi pour prendre en charge les opérations d’entrée/sortie de fichiers (telles que le système d’exploitation, les sous-processus et le shutil). Vous copierez simplement les fichiers et les répertoires en utilisant le module shutil. Les opérations telles que la duplication, le transfert ou la suppression de fichiers et de répertoires sont effectuées à l’aide de cette fonction utilitaire. Les quatre méthodes suivantes sont abordées ici.

Shutil copyfile() Méthode pour copier un fichier en Python

Il copie le matériel source dans un fichier nommé destination. Si la cible n’est pas inscriptible, une exception IOError se produira dans le processus de copie. Si les fichiers d’origine et de destination sont identiques, le message SameFileError est renvoyé. Les noms de chemin des fichiers source et destination sont fournis sous forme de chaînes de caractères.

copyfile(source_file, destination_file)

Les périphériques de caractères ou de blocs et les pipes ne sont pas supportés par cette méthode.

import shutil

source = r"C:\Users\DelftStack\Documents\test\test.txt"
destination = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copyfile(source, destination)

Shutil copy() Méthode pour copier un fichier avec des permissions

La méthode copy() fonctionne comme la commande Unix cp. En copiant son contenu, cette méthode synchronise les permissions du fichier cible avec le fichier source. Si vous copiez le même fichier, elle lance également la commande SameFileError. Sa syntaxe est la suivante.

shutil.copy(src_file, dest_file, *, follow_symlinks=True)

Exemple de la méthode Shutil copy() pour copier un fichier avec des permissions

import shutil

src = r"C:\Users\DelftStack\Documents\test\test.txt"
des = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copy(src, des)

Comparaison entre la méthode copy() et la méthode copyfile()

  1. La méthode copy() définit souvent les droits d’accès au fichier lorsque le contenu est copié, alors que la méthode copyfile() ne copie que les données.
  2. Essentiellement, dans son implémentation, la méthode copyfile() utilise la méthode copyfileobj(). En comparaison, la méthode copy() utilise les fonctions copyfile() et copymode().
  3. Le point ci-dessus indique clairement que copyfile() sera un peu plus rapide que copy() parce qu’il y a un travail supplémentaire à faire avec cette dernière (préservation des permissions).

copyfileobj() Méthode pour copier un objet de fichier

Cette fonction copie le fichier dans l’objet du chemin d’accès ou du fichier cible. Si l’objet cible est un objet fichier, vous devez le fermer après avoir appelé directement copyfileobj(). La taille du tampon est utilisée pour spécifier la longueur du tampon. Il s’agit du nombre d’octets conservés en mémoire pendant le processus de copie.

La syntaxe de la méthode copyfileobj() est ci-dessous.

shutil.copyfileobj(src_file_object, dest_file_object[, length])
import shutil

filename1 = r"C:\Users\DelftStack\Documents\test\test.txt"
fileA = open(filename1, "rb")
filename2 = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
fileB = open(filename2, "wb")
shutil.copyfileobj(fileA, fileB)

Méthode copy2() pour préserver les métadonnées

La méthode copy2() est similaire à la méthode copy(), mais en plus de copier le contenu du fichier, elle préserve également toutes les métadonnées du fichier source.

shutil.copy2(src_file, dest_file, *, follow_symlinks=True)

import shutil

src = r"C:\Users\DelftStack\Documents\test\test.txt"
des = r"C:\Users\DelftStack\Pictures\test2\test2.txt"
shutil.copy2(src, des)

Conclusion des méthodes de copie d’un fichier en Python

A la fin, un tableau est joint pour toutes les méthodes et permet de mieux comprendre l’utilité de shutil.

Fonction copie des métadonnées les autorisations de copies peut utiliser le tampon la destination peut être le répertoire
shutil.copy Non Oui Non Oui
shutil.copyfile Non Non Non Non
shutil.copy2 Oui Oui Non Oui
shutil.copyfileobj Non Non Oui Non

Article connexe - Python File