pathlib — Объектно-ориентированные пути
Модуль pathlib — современная альтернатива os.path для работы с путями файловой системы.
from pathlib import Path
Создание путей
from pathlib import Path
p = Path('.') # Текущий каталог
p = Path.home() # Домашний каталог
p = Path.cwd() # Рабочий каталог
p = Path('/home') / 'user' / 'file.txt' # Соединение через /
Свойства пути
from pathlib import Path
p = Path('/home/user/project/main.py')
p.name # 'main.py'
p.stem # 'main'
p.suffix # '.py'
p.parent # Path('/home/user/project')
p.parts # ('/', 'home', 'user', 'project', 'main.py')
Операции с файлами
from pathlib import Path
p = Path('example.txt')
# Чтение/Запись
p.write_text('Привет мир', encoding='utf-8')
content = p.read_text(encoding='utf-8')
# Проверки
p.exists() # Существует?
p.is_file() # Файл?
p.is_dir() # Каталог?
# Удаление
p.unlink(missing_ok=True)
Операции с каталогами
from pathlib import Path
d = Path('my_project')
d.mkdir(parents=True, exist_ok=True)
# Поиск файлов
for py_file in Path('.').glob('**/*.py'):
print(py_file)
# Содержимое каталога
for item in d.iterdir():
print(item.name)
pathlib vs os.path
| Задача |
os.path |
pathlib |
| Соединить |
os.path.join(a, b) |
Path(a) / b |
| Имя файла |
os.path.basename(p) |
p.name |
| Расширение |
os.path.splitext(p)[1] |
p.suffix |
| Существует |
os.path.exists(p) |
p.exists() |
| Чтение |
open(p).read() |
p.read_text() |
Официальная документация
pathlib — Object-oriented filesystem paths
Полный справочник API (API Reference)
Свойства объекта Path
| Свойство |
Описание |
Path.name |
Имя файла вместе с расширением (базовое имя). |
Path.stem |
Имя файла без расширения. |
Path.suffix |
Расширение файла (например, .txt). |
Path.parent |
Родительская директория пути. |
Важные методы
| Метод |
Описание |
Path.cwd() |
Возвращает объект пути для текущей рабочей директории. |
Path.home() |
Возвращает домашнюю директорию пользователя. |
Path.exists() |
True, если путь физически существует на диске. |
Path.is_dir() |
True, если это директория. |
Path.is_file() |
True, если это файл. |
Path.mkdir(parents=False, exist_ok=False) |
Создает директорию по указанному пути. |
Path.read_text() |
Открывает файл, читает его содержимое в строку и закрывает файл. |
Path.write_text(data) |
Записывает строку в файл, автоматически его закрывая. |
Path.iterdir() |
Возвращает итератор с содержимым директории. |
Path.glob(pattern) |
Поиск файлов по шаблону (например, *.txt) в директории. |
Path.rglob(pattern) |
Рекурсивный поиск файлов (по всем поддиректориям). |