Module pathlib en Python

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

Sources

Avant Python pdb Après Les schémas PostgreSQL

Tag Kemar Joint