<MyRusakov.ru />

WordPress 6 с Нуля до Гуру

WordPress 6 с Нуля до Гуру

Этот курс научит Вас созданию самых разных сайтов на самой популярной в мире CMS - WordPress. Вы увидите установку и настройку локального сервера, разбор каждой настройки, каждой кнопки и каждого пункта меню в панели WordPress.

Также Вы получите и всю практику, поскольку прямо в курсе с нуля создаётся полноценный Интернет-магазин, который затем публикуется в Интернете. И всё это прямо на Ваших глазах.

Помимо уроков к курсу идут упражнения для закрепления материала.

И, наконец, к курсу идёт ценнейший Бонус по тому, как используя ChatGPT и создавая контент для сайта, можно выйти на пассивный доход. Вы наглядно увидите, как зарегистрироваться в ChatGPT (в том числе, и если Вы из России), как правильно выбрать тему для сайта, как правильно генерировать статьи для него(чтобы они индексировались поисковыми системами) и как правильно монетизировать трафик на сайте.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Pathlib в Python: практическое руководство для начинающих (с примерами)

Pathlib в Python: практическое руководство для начинающих (с примерами)

Pathlib в Python — это стандартный модуль, который заменяет громоздкие операции с os и os.path объектно-ориентированным интерфейсом. Он делает работу с путями и файлами единообразной на Windows, macOS и Linux. В этой статье вы узнаете базовые и чуть более продвинутые приёмы, получите готовые рецепты и поймёте, когда pathlib предпочтительнее классических функций.

Почему именно pathlib?

  • Объектный интерфейс: путь — это объект Path, у которого есть методы и свойства.
  • Кросс‑платформенность: не нужно думать о слешах — Path сам подстроится под ОС.
  • Лаконичный синтаксис: оператор / безопасно соединяет части путей.

Быстрый старт с Path

from pathlib import Path

# Текущая директория проекта
p = Path.cwd()
print(p)  # например: /Users/me/project

# Безопасное соединение путей
logs_dir = p / "logs" / "2026"
print(logs_dir)

# Относительный и абсолютный путь
print(logs_dir.is_absolute())
print(logs_dir.resolve())

Проверки: существует ли файл или папка?

from pathlib import Path

path = Path("data/input.csv")
print(path.exists())   # True, если путь существует
print(path.is_file())  # True, если это файл
print(path.is_dir())   # True, если это директория

Создание директорий и файлов

from pathlib import Path

data_dir = Path("data/raw")
# Создать все недостающие папки
data_dir.mkdir(parents=True, exist_ok=True)

# Создать пустой файл (если нет)
(Path("data/raw/.keep")).touch(exist_ok=True)

Чтение и запись файлов: просто и безопасно

from pathlib import Path

text_path = Path("notes/today.txt")
text_path.parent.mkdir(parents=True, exist_ok=True)

# Запись текста
text_path.write_text("Привет, pathlib!\n", encoding="utf-8")

# Дозапись
with text_path.open("a", encoding="utf-8") as f:
    f.write("Ещё одна строка.\n")

# Чтение текста
content = text_path.read_text(encoding="utf-8")
print(content)

# Работа с байтами
bin_path = Path("data/blob.bin")
bin_path.write_bytes(b"\x00\x01\x02")
print(bin_path.read_bytes())

Обход директорий: iterdir, glob и rglob

from pathlib import Path

base = Path("data")

# Все элементы в директории (без рекурсии)
for entry in base.iterdir():
    print(entry, "DIR" if entry.is_dir() else "FILE")

# Поиск по маске (только в текущей папке)
for csv_file in base.glob("*.csv"):
    print("CSV:", csv_file)

# Рекурсивный поиск по подпапкам
for py_file in base.rglob("*.py"):
    print("Python-файл:", py_file)

# Фильтрация по расширению
images = sorted((base.rglob("*")), key=lambda p: p.name)
images = [p for p in images if p.suffix.lower() in {".png", ".jpg", ".jpeg"}]
print(len(images), "изображений найдено")

Домашняя директория и относительные пути

from pathlib import Path

home = Path.home()
print(home)

config = Path("~/.config/myapp/settings.ini").expanduser()
print(config)

# Получить абсолютный путь и нормализовать ссылки/../.
print(config.resolve())

# Относительный путь от папки проекта
project = Path.cwd()
print(config.relative_to(home))  # относительный к домашней

Метаданные файла: размер и время изменения

from pathlib import Path
from datetime import datetime

path = Path("data/input.csv")
if path.exists():
    st = path.stat()
    print("Размер, байты:", st.st_size)
    mtime = datetime.fromtimestamp(st.st_mtime)
    print("Изменён:", mtime.isoformat())

Переименование, перемещение и удаление

from pathlib import Path

src = Path("data/raw/old.csv")
dst = Path("data/processed/new.csv")
dst.parent.mkdir(parents=True, exist_ok=True)

# Переименование или перемещение
if src.exists():
    src.rename(dst)  # или src.replace(dst) для перезаписи без ошибок

# Удаление файла
try:
    dst.unlink()  # удалит файл; для папки используйте rmdir()
except FileNotFoundError:
    pass

Windows vs Linux/macOS: что учитывать

  • Не склеивайте пути вручную обратными слешами: используйте Path(...) и оператор / или joinpath().
  • Если нужно работать с путями другой платформы без доступа к ФС, используйте PureWindowsPath или PurePosixPath (они не трогают файловую систему).
from pathlib import PureWindowsPath, PurePosixPath

win = PureWindowsPath("C:\\Users\\me\\file.txt")
posix = PurePosixPath("/var/log/app.log")
print(win.drive, posix.anchor)

Типичные ошибки и как их избежать

  • Ошибка: соединять строки путей через "+" или f-строки. Решение: p / "sub" / "file.txt" или p.joinpath("sub", "file.txt").
  • Ошибка: забывать про кодировку при чтении/записи текста. Решение: всегда указывать encoding="utf-8".
  • Ошибка: удалять директорию через unlink(). Решение: для папок используйте rmdir() (пустая) или shutil.rmtree() (непустая).

Мини‑проект: разбор папки «Загрузки» по расширениям

Сгруппируем файлы по типу и разложим в подпапки. Отличная практика для pathlib!

from pathlib import Path
from collections import defaultdict
import shutil

DOWNLOADS = Path.home() / "Downloads"
TARGET = DOWNLOADS / "_sorted"
TARGET.mkdir(exist_ok=True)

GROUPS = {
    "images": {".png", ".jpg", ".jpeg", ".gif", ".webp"},
    "docs":   {".pdf", ".docx", ".xlsx", ".pptx", ".txt"},
    "archives": {".zip", ".rar", ".7z", ".tar", ".gz"},
}

buckets = defaultdict(list)
for file in DOWNLOADS.iterdir():
    if file.is_file():
        ext = file.suffix.lower()
        placed = False
        for name, exts in GROUPS.items():
            if ext in exts:
                buckets[name].append(file)
                placed = True
                break
        if not placed:
            buckets["other"].append(file)

for name, files in buckets.items():
    folder = TARGET / name
    folder.mkdir(exist_ok=True)
    for f in files:
        dest = folder / f.name
        try:
            # replace перезапишет, если файл уже есть
            shutil.move(str(f), str(dest))
        except Exception as e:
            print("Не удалось переместить", f, "->", dest, e)

print("Готово! Файлы разложены в:", TARGET)

Итоги

Модуль pathlib делает работу с путями и файлами в Python простой, читаемой и безопасной. Начинайте новые проекты с Path вместо os.path, используйте glob и rglob для поиска, read_text/write_text для удобной работы с текстом и не забывайте про кросс‑платформенность. Хотите системно прокачаться и закрыть пробелы в основах и практике? Рекомендую внимательно посмотреть программу курса «Python с нуля до уровня Гуру — пошаговый интенсив для быстрого старта».

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (https://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: https://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: https://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.