Pathlib вместо os.path
Сегодня поговорим о том, как сделать работу с путями в Python более элегантной и современной. Если вы всё ещё используете os.path, то пора двигаться вперёд!
Модуль pathlib появился в Python 3.4 и полностью изменил правила игры. Это как пересесть с древнего велосипеда на Tesla – всё те же базовые принципы, но сильно удобнее!
Почему стоит перейти на pathlib?
—Объектно-ориентированный подход вместо строковых операций
—Кроссплатформенность из коробки
—Цепочки методов, которые читаются как поэзия
—Меньше кода, больше смысла
Практические примеры:
Старый подход с os.path
import os.path
file_path = os.path.join('data', 'users', 'config.json')
parent_dir = os.path.dirname(file_path)
file_name = os.path.basename(file_path)
Новый подход с pathlib
from pathlib import Path
file_path = Path('data') / 'users' / 'config.json'
parent_dir = file_path.parent
file_name = file_path.name
Крутые фишки pathlib, о которых вы могли не знать:
Проверка существования файла:
path = Path('config.json')
if path.exists():
print('Файл существует!')
Создание директорий одной командой:
Path('nested/directories/structure').mkdir(parents=True, exist_ok=True)
Поиск файлов по маске (glob):
Найти все .py файлы в текущей директории
python_files = list(Path('.').glob('*.py'))
Работа с суффиксами и расширениями:
path = Path('document.pdf')
print(path.suffix) # .pdf
print(path.stem) # document
А теперь самое вкусное – цепочки методов:
config_path = (Path.home() / 'projects' / 'app' / 'config.json')
if config_path.exists():
data = json.loads(config_path.read_text())
Pro-tip: pathlib отлично работает с контекстными менеджерами:
with Path('log.txt').open('w') as f:
f.write('Logging started')
Когда стоит использовать os.path? Практически никогда! Разве что при работе с легаси-кодом или если вам нужны какие-то очень специфические операции с путями.
В заключение: pathlib – это не просто альтернатива os.path, это следующий эволюционный шаг в работе с файловой системой в Python. Он делает код чище, понятнее и приятнее в поддержке. Если вы ещё не перешли на pathlib, самое время начать!
Ещё много полезной информации, практики и задач закинул в свой канал - клик