pathlib
est un module de la librairie standard Python permettant de manipuler les chemins d'accès du système de fichiers avec une syntaxe orientée objet.
Il fusionne le meilleur d'os
, os.path
et glob
.
Meilleure lisibilité
Les fonctions d'os.path
sont imbriquées et forcent une lecture du code de l'intérieur vers l'extérieur :
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES_DIR = os.path.join(BASE_DIR, 'templates')
pathlib
retourne des objets Path
qui permettent de chaîner méthodes et attributs :
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATES_DIR = BASE_DIR.joinpath('templates')
Intégration de glob
Un glob
permet de trouver des fichiers dont les noms correspondent à des caractères jokers.
Le module pathlib
intègre des utilitaires de type glob
:
Path('docs').glob('*.md')
Simplification des opérations de lecture/écriture
Path('README.md').open('r').read()
Path('README.md').read_text()
Path('README.md').write_text('Read the Docs!')
Certains built-ins acceptent des objets Path
Comme open
:
path = Path('.editorconfig')
with open(path, mode='wt') as config:
config.write('# config goes here')
Normalisation des séparateurs de chemin
Sous Windows :
>>> str(Path('src/__pypackages__'))
'src\\__pypackages__'