Déplacer des fichiers et gérer les répertoires en Python

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Les bases de la gestion du système de fichiers en Python

La gestion du système de fichiers est l'une des tâches les plus courantes en développement Python. Ce processus inclut la création et la suppression de fichiers, leur copie, leur déplacement, leur renommage, ainsi que la création de répertoires et la vérification de leur existence. Les opérations sur les fichiers constituent le fondement de l'automatisation des processus, du développement web, de l'analyse de données, de la gestion des configurations et du déploiement d'applications.

Python offre un vaste ensemble de bibliothèques intégrées pour travailler efficacement avec le système de fichiers. Les principaux outils sont les modules os, shutil et pathlib. Ces bibliothèques couvrent pratiquement tous les scénarios d'utilisation possibles, des opérations de base aux tâches avancées.

Déplacer des fichiers en Python

Utilisation de la fonction shutil.move()

Lorsque vous devez déplacer un fichier d'un répertoire à un autre, la méthode la plus simple et la plus efficace est d'utiliser la fonction shutil.move(). Cette fonction fonctionne de manière similaire à la commande mv sous Linux et Unix.

import shutil  

shutil.move('source/fichier.txt', 'destination/fichier.txt')  

La fonction shutil.move() gère automatiquement aussi bien les fichiers individuels que les répertoires entiers. Lors du déplacement, le fichier peut être renommé simultanément. Il est important de noter que si un fichier portant le même nom existe déjà dans le dossier de destination, il sera écrasé sans avertissement.

Créer des répertoires lors du déplacement

Lors du déplacement de fichiers, il est souvent nécessaire de créer de nouveaux répertoires. L'approche suivante résout ce problème :

import os  
import shutil  

src = 'data/rapport.txt'  
dst_dir = 'archive'  
os.makedirs(dst_dir, exist_ok=True)  
shutil.move(src, os.path.join(dst_dir, 'rapport.txt'))  

La fonction os.makedirs() avec le paramètre exist_ok=True crée une chaîne de répertoires s'ils sont absents et ne génère pas d'erreur si les répertoires existent déjà.

Déplacer des répertoires

La fonction shutil.move() prend également en charge le déplacement de répertoires entiers :

shutil.move('ancien_dossier', 'nouvel_emplacement/ancien_dossier')  

Copier des fichiers et créer des liens

Copie de base de fichiers

Pour copier des fichiers, Python propose plusieurs fonctions aux fonctionnalités variées :

import shutil  

# Copie du contenu du fichier  
shutil.copy('fichier.txt', 'sauvegarde/fichier.txt')  

La fonction copy() ne copie que le contenu du fichier, sans conserver les métadonnées. Pour une copie complète avec conservation de tous les attributs du fichier, utilisez copy2() :

shutil.copy2('fichier.txt', 'sauvegarde/fichier.txt')  

Copier des répertoires

Pour copier des répertoires entiers avec tout leur contenu, utilisez la fonction copytree() :

shutil.copytree('projet', 'sauvegarde_projet')  

Créer des liens physiques

Un lien physique est un nom supplémentaire pour un fichier existant dans le système de fichiers :

import os  

os.link('fichier.txt', 'fichier_lie.txt')  

Un lien physique signifie qu'un même fichier physique est accessible via plusieurs chemins différents. Les modifications du contenu du fichier sont répercutées sur tous les liens. Le nombre de liens physiques peut être vérifié avec os.stat().st_nlink.

Gestion des répertoires

Créer des répertoires

Python propose deux fonctions principales pour créer des répertoires :

import os  

# Création d'un seul répertoire  
os.mkdir('nouveau_dossier')  

# Création d'une structure de répertoires imbriquée  
os.makedirs('parent/enfant/petit-enfant', exist_ok=True)  

La fonction mkdir() ne crée qu'un seul répertoire et lève une exception FileExistsError si le répertoire existe déjà.

Blogs

Book Recommendations