tariel.ge › Полезное: бесплатные книги › Программирование: от нулей и единиц до PythonБесплатно · автор Тариел Бежанидзе
← Учебник по программированию ЛИСТ 22БЛОК 4 — PYTHON НА ПРАКТИКЕРЕВ. 1
Глава 22 · Python на практике

Файловая система из Python (os, pathlib)

Прямое практическое продолжение блока 2: те же операции, что раньше вводились командами в терминале, теперь доступны прямо изнутри Python-кода — без выхода в отдельную оболочку.

os — старый, но всё ещё повсеместный модуль

import os

print(os.getcwd()) # текущая рабочая папка — аналог pwd (глава 09) / cd (глава 10)
print(os.listdir(".")) # список файлов в папке — аналог ls / dir
os.mkdir("new_folder") # создать папку
os.rename("old.txt", "new.txt") # переименовать
os.remove("file.txt") # удалить файл

Каждая из этих функций — прямой программный эквивалент команды терминала, уже знакомой из блока 2: os.getcwd() делает то же, что pwd в Bash (глава 09) или просто cd без аргументов в CMD (глава 10), только результат возвращается Python-программе как строка, готовая к дальнейшей обработке в коде, а не просто выводится на экран.

pathlib — более современный, объектный подход

Знакомая идея из главы 11

pathlib работает с путями как с объектами, а не просто строками текста — концептуально похоже на то, чем PowerShell (глава 11) отличается от Bash/CMD: не текст, который приходится разбирать вручную, а структура с осмысленными свойствами и методами.

from pathlib import Path

folder = Path("documents")
file = folder / "report.txt" # оператор / собирает путь platform-независимо!

print(file.exists()) # существует ли файл
print(file.name) # report.txt — только имя файла
print(file.suffix) # .txt — только расширение
print(file.parent) # documents — родительская папка
Оператор / решает проблему разных разделителей путей

Прямо сейчас видна практическая польза от темы главы 10: Windows использует обратный слэш в путях, macOS/Linux — прямой. Собирая путь через folder / "report.txt", pathlib сам подставляет правильный разделитель для той операционной системы, где реально выполняется код — не нужно вручную выбирать между \\ и / в зависимости от платформы, о чём предупреждала глава 18 применительно к сырым строкам для путей Windows.

Обход дерева папок

from pathlib import Path

for file in Path(".").glob("*.txt"):
    print(file) # все .txt файлы в текущей папке

for file in Path(".").rglob("*.txt"):
    print(file) # то же самое, но рекурсивно — включая все вложенные папки

.glob() — то же самое использование подстановочных знаков (*), что уже встречалось в командной строке (главы 09–10), только теперь результат — не просто вывод на экран, а список объектов путей, с которыми программа может делать что угодно дальше — переименовывать, читать, фильтровать по любому условию.

os против pathlib — что выбрать сегодня

Модуль os старше и до сих пор широко используется, особенно в уже существующем коде и во многих учебных материалах. pathlib, появившийся позже, предлагает более современный, читаемый и платформо-независимый способ работы с путями — для нового кода это, как правило, более разумный выбор по умолчанию, хотя знать оба варианта полезно, поскольку оба реально встречаются на практике.

Практический пример: переименование группы файлов

from pathlib import Path

for i, file in enumerate(sorted(Path("photos").glob("*.jpg")), start=1):
    new_name = file.parent / f"photo_{i:03d}.jpg"
    file.rename(new_name) # photo_001.jpg, photo_002.jpg, ...

Этот пример — прямая заготовка для следующей главы: массовое переименование файлов по маске — одна из самых частых реальных задач автоматизации, объединяющая пути (эта глава), строковое форматирование (f"{i:03d}" — число с ведущими нулями, глава 14) и обход файлов из этой же главы.

Что дальше

Финальная глава этого блока — настоящие законченные скрипты автоматизации: массовое переименование файлов по маске и разбор текста, объединяющие практически всё, что изучено в блоках 3 и 4 книги.

Глава22 — Файловая система из Python
Блок4 — Python на практике
Далее23 — Скрипты автоматизации
СтатусГотово · рев. 1
Предыдущая глава ← 21 · Обработка ошибок Следующая глава 23 · Скрипты автоматизации →

Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.