В этом уроке мы подробно изучим работу с файлами и папками в Python. Начнём с навигации по файловой системе: научимся определять текущую рабочую директорию, менять её, проверять существование файлов и папок. Вы узнаете, как создавать новые папки с помощью os.mkdir() и os.makedirs() (создание вложенных папок), удалять папки с помощью os.rmdir() и shutil.rmtree(), переименовывать и перемещать их с помощью os.rename(). Также познакомимся с современным модулем pathlib, который предоставляет объектно-ориентированный интерфейс для работы с путями.
Затем перейдём к работе с файлами. Вы узнаете, как открывать файлы с помощью встроенной функции open(), какие бывают режимы доступа: 'r' (чтение — файл должен существовать), 'w' (запись — создаёт новый файл или перезаписывает существующий), 'a' (дозапись в конец — добавляет данные в конец файла), 'x' (эксклюзивное создание — создаёт файл, но если он уже существует, вызывает ошибку), 'r+' (чтение и запись), а также бинарный режим 'b' (rb, wb, ab) для работы с изображениями, аудио, видео и другими нетекстовыми файлами.
Научимся правильно закрывать файлы с помощью метода close() и, что гораздо удобнее, использовать контекстный менеджер with. Конструкция with open(...) as file: автоматически закрывает файл даже при возникновении ошибки внутри блока — это стандартный и самый безопасный способ работы с файлами в Python.
Мы подробно разберём все способы чтения файлов. read() читает весь файл целиком — удобно для небольших файлов. readline() читает одну строку за раз — полезно, когда нужно обрабатывать строки по одной. readlines() читает все строки в список — хорошо для небольшого объёма данных. Для больших файлов (логи на несколько гигабайт) мы научимся читать файл построчно в цикле for line in file:, что не загружает весь файл в память и позволяет обрабатывать его постепенно.
Научимся записывать данные в файлы с помощью write() (запись одной строки) и writelines() (запись списка строк). Вы узнаете, как форматировать вывод с помощью f-строк, как добавлять символы переноса строки, и как создавать структурированные текстовые файлы.
Особое внимание уделим работе с популярными форматами данных: JSON и CSV. JSON (JavaScript Object Notation) — это текстовый формат обмена данными, который идеально соответствует структурам Python (словари, списки, строки, числа). Вы узнаете, как сериализовать Python-объекты в JSON с помощью json.dump() (запись в файл) и json.dumps() (получение строки JSON), и как десериализовать JSON обратно в Python-объекты с помощью json.load() (чтение из файла) и json.loads() (чтение из строки). Научимся делать JSON-файлы читаемыми для человека с помощью параметра indent.
CSV (Comma-Separated Values) — это формат табличных данных, который используется в Excel, Google Sheets и базах данных. Изучим модуль csv: csv.reader для чтения CSV-файлов (возвращает списки значений), csv.writer для записи, а также csv.DictReader и csv.DictWriter для работы со словарями, где ключи — это названия колонок из заголовка CSV. Это значительно упрощает работу с табличными данными.
Все примеры будут максимально практичными: создание структуры папок для проекта, программа для ведения заметок с сохранением в файл, обработка файлов конфигурации в формате JSON, экспорт данных в CSV для анализа в Excel, импорт данных из CSV для базы данных, парсинг лог-файлов. К концу урока вы будете уверенно работать с файлами и папками в Python и сможете создавать программы, которые сохраняют своё состояние между запусками и обмениваются данными с другими программами.