--- title: Informations des répertoires et fichiers author: Steve Kossouho --- # Exploiter le système de fichiers ---- ## Le package `pathlib` Le module `pathlib` de Python 3.4+ (2014) offre des classes orientées objet pour manipuler les chemins de fichiers. Il s'agit d'une interface moderne orientée objet pour compléter ou remplacer ce qui se faisait avec le module `os.path`. ---- ### Les objets `pathlib.Path` L'objet `Path` du module `pathlib` représente un chemin de fichier général et offre des méthodes et des propriétés pour effectuer diverses opérations sur ledit chemin. ```python {.numberLines} from pathlib import Path # Créer un objet Path p = Path('/chemin/vers/fichier') ``` Créer un chemin. _Le chemin peut ou non exister réellement sur le système local, la seule contrainte étant qu'il soit valide par rapport à la norme POSIX (et Windows)_. ---- ### Méthodes utiles des objets `pathlib.Path` Les objets `Path` ont plusieurs méthodes utiles pour gérer un chemin de fichier ou de répertoire. Parmi les outils qui renvoient les informations les plus simples : ```python {.numberLines} from pathlib import Path # Imaginons que bob est un répertoire f = Path("/home/bob") # Vérifier si un chemin existe print(f"Le chemin existe : {f.exists()}") # Générer un objet Path qui est un répertoire enfant de bob f2 = f / "morane" # M'affiche "/home/bob/morane" print(f2) # Vérifier si un chemin est un répertoire if p.is_dir(): print("C'est un répertoire.") # Vérifier si un chemin est un fichier if p.is_file(): print("C'est un fichier.") ``` ---- ### Parcourir récursivement des fichiers avec `pathlib.Path` La méthode `rglob()` des objets `Path` peut être utilisée pour parcourir récursivement des fichiers. ```python {.numberLines} from pathlib import Path # Parcourir récursivement tous les fichiers .txt for fichier in Path('/chemin/vers/répertoire').rglob('*.txt'): print(fichier) # Parcourir tous les fichiers .txt du répertoire, sans récursion for fichier in Path('/chemin/vers/répertoire').glob('*.txt'): print(fichier) ```