Copier des fichiers en Python avec shutil.copy() et shutil.copystat()
Copier des fichiers en Python avec shutil.copy() et shutil.copystat()
Bases de la copie de fichiers en Python
Le module shutil de Python offre des fonctions simples pour copier des fichiers et préserver les métadonnées. Les deux utilitaires principaux sont shutil.copy() et shutil.copystat().
copy(src, dst)
Copie le fichier situé à src vers la destination dst. Le contenu du fichier est dupliqué, mais les permissions et horodatages ne sont pas préservés.
copystat(src, dst)
Copie les métadonnées du fichier — incluant permissions, horodatages et autres attributs spécifiques à l'OS — de src vers dst. Elle doit être appelée après un copy() réussi pour répliquer l'état complet du fichier.
Exemple étape par étape
- Localiser le fichier source
Confirmez queguru99.txtexiste dans le répertoire de travail actuel et récupérez son chemin absolu.

import os
from os import path
src_path = path.realpath("guru99.txt")
print("Source :", src_path)
- Créer un nom de sauvegarde
Ajoutez.bakau nom de fichier original pour former le chemin de destination.
dst_path = src_path + ".bak"
print("Destination :", dst_path)
- Copier le contenu du fichier
Utilisezshutil.copy()pour dupliquer les données du fichier.
import shutil shutil.copy(src_path, dst_path)
- Copier les métadonnées
Après la copie du contenu, répliquez les permissions et horodatages du fichier original.
shutil.copystat(src_path, dst_path)
- Vérifier la copie
Utilisezos.path.getmtime()pour afficher l'heure de dernière modification du fichier de sauvegarde.
import datetime
mod_time = path.getmtime(dst_path)
print("Dernière modification :", datetime.datetime.fromtimestamp(mod_time))
L'exécution du script créera guru99.txt.bak dans le même répertoire, avec les mêmes permissions et horodatages que l'original.
Conseils pratiques
- Effectuez toujours
shutil.copy()avantshutil.copystat()— ce dernier nécessite un fichier de destination existant. - En travaillant sur différents systèmes de fichiers, sachez que tous les attributs de métadonnées ne sont pas supportés ;
copystat()copiera seulement ce que l'OS expose. - Pour la copie récursive de répertoires, considérez
shutil.copytree()oushutil.copy2(), qui combinecopy()etcopystat()en une seule étape.
Résumé
- Utilisez
shutil.copy(src, dst)pour dupliquer le contenu du fichier. - Utilisez
shutil.copystat(src, dst)pour dupliquer permissions, horodatages et autres métadonnées.
Python
- Maîtriser les types de données Python : Guide pratique
- Maîtriser les opérateurs Python : Guide complet
- Maîtriser l'instruction pass en Python : Guide pratique
- Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
- Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
- Entrées/sorties de fichiers Python : maîtriser les opérations sur les fichiers
- Python len() : Guide pratique pour mesurer la longueur des objets
- Maîtriser la méthode String.find() de Python : Syntaxe, Exemples et Alternatives
- Vérifier l'existence de fichiers et répertoires en Python – Guide pratique