pathlib вместо os.path
После нескольких лет на os.path я почти полностью перешёл на pathlib. Главная причина — операции с путями читаются как обычный текст, а не как вложенные вызовы функций.
Было
import os
cfg = os.path.join(os.path.dirname(__file__), "config", "app.toml")
if os.path.exists(cfg):
text = open(cfg).read()
Стало
from pathlib import Path
cfg = Path(__file__).parent / "config" / "app.toml"
if cfg.exists():
text = cfg.read_text()
Оператор / для склейки путей поначалу выглядит непривычно, но через день становится естественным. Особенно приятны методы вроде read_text(), write_text(), glob() и rglob() — они закрывают большинство повседневных задач без импорта дополнительных модулей.
Где os.path всё ещё уместен
В горячих циклах, где создаются миллионы путей, объекты Path чуть дороже строк. Но это редкий случай — почти всегда читабельность важнее.