В этом модуле мы углубимся в работу с файловой системой, а именно — в модуль os и его подмодуль os.path. Этот инструмент незаменим для создания кроссплатформенных приложений, так как он позволяет корректно обрабатывать пути к файлам независимо от того, работаете вы на Windows, macOS или Linux.
Мы разберем, как правильно "склеивать" пути, как проверять существование файлов и папок, как отделять имя файла от его расширения и как получать абсолютные пути. Вы научитесь писать код, который не ломается при переносе на другой компьютер. Задания построены от простого сопоставления понятий до написания логических конструкций проверки файлов.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
1. Основные инструменты os.path
Перед написанием кода давайте разберемся с назначением основных функций модуля os.path. Сопоставьте название функции с тем, что она делает.
os.path.split()os.path.join()os.path.exists()os.path.abspath()2. Безопасное соединение путей
В Python не рекомендуется соединять пути обычной конкатенацией строк (через `+`), так как в Windows и Linux разные разделители папок. Заполните пропуски, чтобы импортировать модуль и корректно собрать путь к файлу 'data.txt' в папке 'project'.
import input1S
folder = "project"
file = "data.txt"
# Правильное соединение путей
full_path = input2S.path.input3S(folder, file)
print(full_path)3. Что вернет basename?
Функция `os.path.basename()` возвращает последнюю часть пути. Проанализируйте код и выберите, что будет выведено на экран. Обратите внимание, что файл физически может не существовать, функция работает только со строкой.
import os
path_str = "/Users/admin/documents/report_final.pdf"
name = os.path.basename(path_str)
print(name)4. Типы проверок файловой системы
В `os.path` есть разные функции для проверки путей. Распределите их по категориям: те, что проверяют конкретный тип объекта (файл или папка), и те, что проверяют просто наличие чего-либо по этому пути.
os.path.isfile(path)os.path.isdir(path)os.path.exists(path)5. Получение абсолютного пути
Соберите код, который превращает относительный путь "script.py" в абсолютный (полный путь от корня диска) и выводит его. Будьте внимательны, мы используем модуль `os`.
print(full_path)full_path = os.path.abspath(rel_path)import osrel_path = "script.py"full_path = os.getcwd() + rel_path6. Исправьте ошибку в названии функции
Программист хотел проверить, является ли путь директорией, но допустил опечатку в названии метода. Найдите и исправьте её.
import ospath = "/tmp"if os.path.is_dir(path): print("Это папка")7. Разделение имени файла и расширения
Частая задача — узнать формат файла. Функция `splitext` ("split extension") делит путь на две части: путь с именем и расширение (начиная с точки). Заполните пропуски, чтобы код вывел расширение файла.
import os
filename = "photo.jpg"
# Разделяем имя и расширение
name, ext = os.path.input1S(input2S)
print("Расширение файла:", input3S)8. Определение родительской папки
Функция `os.path.dirname()` возвращает путь к директории, в которой находится файл (отсекает последнее звено пути). Посмотрите на код и напишите, что он выведет.
import os
# Путь в стиле Linux/Mac
p = '/var/www/html/index.html'
parent = os.path.dirname(p)
print(parent)9. Проверка перед открытием
Восстановите логический порядок кода. Сценарий такой: мы задаем имя файла, проверяем, существует ли он вообще, и только если он существует — выводим сообщение "Found". Если нет — "Missing".
print("Found")if os.path.exists(fname):import osfname = 'config.ini'else: print("Missing")