Files
training.python.beginner/documentation/08-files-paths.md
2025-07-04 19:26:39 +02:00

78 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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)
```