Déplacer et renommer des fichiers avec shutil.move() en Python

Le module shutil fournit la fonction shutil.move() permettant de déplacer des fichiers et des dossiers en Python. Cette même fonction peut également être utilisée pour renommer un fichier ou un dossier. Elle constitue ainsi une solution simple pour organiser automatiquement les fichiers d'un projet.

1. À propos de shutil.move()

La fonction shutil.move() appartient au module shutil de la bibliothèque standard de Python. Elle permet de déplacer un fichier ou un dossier depuis un emplacement source vers un emplacement de destination. Il n'est donc pas nécessaire d'installer un module supplémentaire avec pip.

Syntaxe de shutil.move()

La fonction reçoit principalement deux arguments : src représente le chemin de l'élément source et dst représente sa destination. Elle retourne le chemin de destination effectivement utilisé.

Sortie :

Pour utiliser move(), nous devons commencer par importer le module shutil. L'exemple suivant vérifie simplement que le module est disponible.

Sortie :

2. Déplacer un fichier

L'utilisation la plus courante de shutil.move() consiste à déplacer un fichier d'un dossier vers un autre. Le dossier de destination doit normalement exister avant l'opération.

Déplacer un fichier vers un dossier

Supposons que le fichier document.txt se trouve dans le dossier courant et que nous souhaitions le déplacer vers un dossier nommé documents. Nous indiquons simplement ces deux chemins à move().

Sortie :

Après l'exécution, document.txt n'est plus présent à son emplacement initial. Il se trouve maintenant dans le dossier documents.

Déplacer en indiquant seulement le dossier

Lorsque la destination est un dossier existant, nous pouvons directement fournir son chemin. Le fichier conserve alors son nom d'origine.

Sortie :

Si images est un dossier existant, le fichier est déplacé vers images/photo.jpg.

Récupérer le chemin retourné

shutil.move() retourne le chemin correspondant à la destination du déplacement. Nous pouvons récupérer cette information dans une variable.

Sortie possible :

Le chemin retourné peut ensuite être réutilisé par le programme pour effectuer d'autres opérations.

3. Renommer un fichier

La fonction shutil.move() peut également servir à renommer un fichier. Lorsque le chemin source et le chemin destination correspondent au même emplacement mais utilisent des noms différents, le fichier est simplement renommé.

Renommer simplement un fichier

Dans l'exemple suivant, le fichier ancien.txt est renommé en nouveau.txt.

Sortie :

Après l'exécution, ancien.txt n'existe plus sous son ancien nom et le fichier porte désormais le nom nouveau.txt.

Renommer un fichier en conservant son extension

Lors du renommage, il est important de conserver une extension appropriée. L'exemple suivant transforme photo1.jpg en vacances.jpg.

Sortie :

shutil.move() ne convertit pas le format du fichier. Modifier uniquement l'extension ne transforme donc pas réellement une image JPEG en PNG, un document texte en PDF, etc.

4. Déplacer et renommer un fichier simultanément

L'un des avantages de shutil.move() est qu'il est possible de déplacer et renommer un fichier en une seule opération. Il suffit d'indiquer dans la destination le nouveau dossier ainsi que le nouveau nom.

Déplacer et changer le nom

Dans l'exemple suivant, rapport.txt est déplacé dans le dossier archives et renommé simultanément en rapport_2026.txt.

Sortie :

Cette technique évite d'effectuer séparément une opération de déplacement puis une opération de renommage.

Créer le dossier de destination avant le déplacement

Lorsque le dossier de destination n'existe pas, il est souvent préférable de le créer explicitement avant de déplacer le fichier. Nous pouvons utiliser os.makedirs() avec l'option exist_ok=True.

Sortie :

Cette méthode rend le programme plus robuste lorsque nous ne savons pas si le dossier archives existe déjà.

5. Déplacer et renommer des dossiers

shutil.move() ne fonctionne pas uniquement avec les fichiers. Elle peut également déplacer ou renommer des dossiers complets, y compris leur contenu et leurs sous-dossiers.

Déplacer un dossier

Supposons que nous souhaitions déplacer le dossier photos vers un dossier existant nommé sauvegarde. La même fonction peut être utilisée.

Sortie :

Le dossier photos, ses fichiers et ses éventuels sous-dossiers sont déplacés dans sauvegarde.

Renommer un dossier

Pour renommer un dossier sans changer son emplacement, il suffit d'indiquer son ancien nom puis son nouveau nom.

Sortie :

Le dossier ancien_projet porte maintenant le nom nouveau_projet.

Déplacer et renommer un dossier

Comme pour un fichier, nous pouvons déplacer un dossier vers un nouvel emplacement tout en lui attribuant un nouveau nom.

Sortie :

Le dossier projet est déplacé vers archives et porte désormais le nom projet_python.

6. Gérer les erreurs avec shutil.move()

Une opération avec shutil.move() peut échouer lorsque le fichier source n'existe pas, lorsque la destination pose un conflit ou lorsque Python ne possède pas les permissions nécessaires. Il est donc conseillé de prévoir une gestion des erreurs.

Vérifier que le fichier source existe

Avant de déplacer un fichier, nous pouvons utiliser os.path.exists() afin de vérifier son existence.

Sortie possible :

Cette vérification permet d'éviter une tentative de déplacement lorsque le fichier source est absent.

Utiliser try et except

Pour gérer plusieurs catégories d'erreurs, nous pouvons utiliser les instructions try et except. Elles permettent d'afficher un message adapté sans interrompre brutalement le programme.

Sortie possible :

FileNotFoundError correspond notamment à l'absence d'un chemin nécessaire, tandis que PermissionError indique un problème de droits d'accès. shutil.Error peut signaler d'autres problèmes liés à l'opération.

Attention aux fichiers déjà existants

Le comportement en présence d'un élément portant déjà le même nom dans la destination peut dépendre du système d'exploitation, du type de destination et de la situation. Pour éviter toute perte accidentelle de données, il est préférable de vérifier explicitement l'existence de la destination avant le déplacement.

Sortie possible :

Cette précaution est particulièrement importante dans les scripts qui manipulent automatiquement un grand nombre de fichiers.

7. Exemples pratiques et points importants

Organiser automatiquement des fichiers

shutil.move() peut servir à créer un petit programme d'organisation automatique des fichiers. L'exemple suivant déplace plusieurs fichiers PDF vers un dossier nommé PDF.

Sortie possible :

Ce principe peut être étendu pour classer automatiquement les images, documents, archives ou autres types de fichiers selon leur extension.

Renommer plusieurs fichiers

Nous pouvons également utiliser shutil.move() dans une boucle pour renommer plusieurs fichiers. L'exemple suivant ajoute le préfixe backup_ aux noms de trois fichiers.

Sortie :

Cette méthode permet d'automatiser rapidement le renommage en série de nombreux fichiers.

Points importants à retenir

shutil.move() permet de déplacer un fichier d'un emplacement vers un autre.

La même fonction permet de renommer un fichier lorsque nous indiquons un nouveau nom comme destination.

shutil.move() peut déplacer et renommer simultanément un fichier en indiquant un nouveau dossier et un nouveau nom.

La fonction fonctionne également avec des dossiers complets et leurs sous-dossiers.

Lorsque la source et la destination se trouvent sur des systèmes de fichiers différents, l'opération peut nécessiter une copie suivie d'une suppression de la source plutôt qu'un simple renommage système.

Avant une opération importante, il est conseillé de vérifier l'existence de la source et de la destination afin d'éviter les erreurs et les remplacements involontaires.

Remarque Finale

La fonction shutil.move() constitue une solution simple et puissante pour déplacer et renommer des fichiers en Python. Elle peut manipuler aussi bien des fichiers individuels que des dossiers complets et permet de combiner déplacement et changement de nom en une seule opération.

Associée aux fonctions du module os ou du module pathlib, elle permet de développer facilement des scripts d'organisation de fichiers, de classement automatique, de sauvegarde ou de gestion de documents.

 


 


Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


Leave a Reply

Your email address will not be published. Required fields are marked *