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à.