Работа с путями (os.path)

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

В этом модуле мы углубимся в работу с файловой системой, а именно — в модуль os и его подмодуль os.path. Этот инструмент незаменим для создания кроссплатформенных приложений, так как он позволяет корректно обрабатывать пути к файлам независимо от того, работаете вы на Windows, macOS или Linux.

Мы разберем, как правильно "склеивать" пути, как проверять существование файлов и папок, как отделять имя файла от его расширения и как получать абсолютные пути. Вы научитесь писать код, который не ломается при переносе на другой компьютер. Задания построены от простого сопоставления понятий до написания логических конструкций проверки файлов.

Список тем

1. Основные инструменты os.path

id: 40061_task_osp_01

Перед написанием кода давайте разберемся с назначением основных функций модуля os.path. Сопоставьте название функции с тем, что она делает.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
Соединяет компоненты пути с учетом особенностей ОС (слеши)
Проверяет, существует ли указанный путь (файл или папка)
Разделяет путь на кортеж (путь_к_файлу, имя_файла)
Возвращает нормализованный абсолютный путь
os.path.split()
os.path.join()
os.path.exists()
os.path.abspath()
Сообщения
Проверить
Показать подсказку

2. Безопасное соединение путей

id: 40061_task_osp_02

В Python не рекомендуется соединять пути обычной конкатенацией строк (через `+`), так как в Windows и Linux разные разделители папок. Заполните пропуски, чтобы импортировать модуль и корректно собрать путь к файлу 'data.txt' в папке 'project'.

Заполните пропуски
import input1S

folder = "project"
file = "data.txt"

# Правильное соединение путей
full_path = input2S.path.input3S(folder, file)

print(full_path)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Что вернет basename?

id: 40061_task_osp_03

Функция `os.path.basename()` возвращает последнюю часть пути. Проанализируйте код и выберите, что будет выведено на экран. Обратите внимание, что файл физически может не существовать, функция работает только со строкой.

Выберите правильный вариант ответа
import os
path_str = "/Users/admin/documents/report_final.pdf"
name = os.path.basename(path_str)
print(name)
Сообщения
Проверить
Показать подсказку

4. Типы проверок файловой системы

id: 40061_task_osp_04

В `os.path` есть разные функции для проверки путей. Распределите их по категориям: те, что проверяют конкретный тип объекта (файл или папка), и те, что проверяют просто наличие чего-либо по этому пути.

Перетяните элементы в соответствующие блоки
Проверка конкретного типа
Общая проверка наличия
os.path.isfile(path)
os.path.isdir(path)
os.path.exists(path)
Сообщения
Проверить
Показать подсказку

5. Получение абсолютного пути

id: 40061_task_osp_05

Соберите код, который превращает относительный путь "script.py" в абсолютный (полный путь от корня диска) и выводит его. Будьте внимательны, мы используем модуль `os`.

Перетяните в правильном порядке строки из одного блока в другой
print(full_path)
full_path = os.path.abspath(rel_path)
import os
rel_path = "script.py"
full_path = os.getcwd() + rel_path
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Исправьте ошибку в названии функции

id: 40061_task_osp_06

Программист хотел проверить, является ли путь директорией, но допустил опечатку в названии метода. Найдите и исправьте её.

Найдите ошибку и исправьте
import os
path = "/tmp"
if os.path.is_dir(path):
    print("Это папка")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Разделение имени файла и расширения

id: 40061_task_osp_07

Частая задача — узнать формат файла. Функция `splitext` ("split extension") делит путь на две части: путь с именем и расширение (начиная с точки). Заполните пропуски, чтобы код вывел расширение файла.

Нужно правильно расставить в пропуски предложенные варианты
import os

filename = "photo.jpg"
# Разделяем имя и расширение
name, ext = os.path.input1S(input2S)

print("Расширение файла:", input3S)
splitext
filename
ext
split_extension
name
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

8. Определение родительской папки

id: 40061_task_osp_08

Функция `os.path.dirname()` возвращает путь к директории, в которой находится файл (отсекает последнее звено пути). Посмотрите на код и напишите, что он выведет.

Что должно получиться?
import os
# Путь в стиле Linux/Mac
p = '/var/www/html/index.html'
parent = os.path.dirname(p)
print(parent)
Сообщения
Проверить
Показать подсказку

9. Проверка перед открытием

id: 40061_task_osp_09

Восстановите логический порядок кода. Сценарий такой: мы задаем имя файла, проверяем, существует ли он вообще, и только если он существует — выводим сообщение "Found". Если нет — "Missing".

Расставьте строки в правильном порядке
    print("Found")
if os.path.exists(fname):
import os
fname = 'config.ini'
else:
    print("Missing")
Сообщения
Проверить
Показать подсказку

Python: запуск кода в браузере

id: 40061_compiler
🐍
Запустить тренажёр (Python)
НайтиКурс.Ру