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__'