11_Формулировка_прикладной_задачи.md - YaroslavGit28/os.sys-PY GitHub Wiki
11. Формулировка прикладной задачи
11.1. Базовая учебная задача
Нужно написать учебный консольный файловый менеджер:
- с минимальной бизнес-логикой;
- с акцентом на библиотеку
osиos.system; - с простым, понятным интерфейсом для демонстрации функций стандартной библиотеки.
11.2. Конкретные требования к проекту
-
Без сложной логики:
- никаких рекурсивных обходов дерева;
- никаких сложных фильтров, шаблонов, регулярных выражений;
- никаких БД, API, GUI.
-
Сфокусироваться на функциях библиотеки:
os.systemдля вызова внешних системных команд;os.mkdir,os.makedirs,os.remove,os.rmdirдля ФС;os.rename,os.replaceдля управления именами;os.listdir,os.scandirдля обзора директории;os.path.*иos.statдля метаданных;os.utime,os.access,os.environ,os.getenv;os.getpid,os.cpu_count,os.getlogin.
-
Интерактивный интерфейс в виде меню:
- пользователь выбирает пункт цифрой;
- каждое действие должно быть наглядным и повторяемым.
-
Учебная переносимость:
- Windows — полный набор функций;
- Linux/macOS — корректная деградация там, где поведение отличается.
11.3. Ограничения (чтобы не усложнять)
Чтобы проект оставался учебным:
- удаляем только пустые папки (
os.rmdir); - не поддерживаем рекурсивное удаление каталогов;
- не делаем многопоточность;
- не добавляем сложные конфиги и внешние зависимости.
11.4. Ожидаемый результат
После выполнения задачи студент получает:
- рабочий скрипт
file_manager.py; - понимание связки:
- “ввод пользователя → Python-функция → системный вызов или файловая операция”;
- практический опыт:
- безопасного ввода;
- обработки базовых ошибок;
- кроссплатформенной развилки по ОС.
11.5. Диаграмма: требование → реализация
flowchart TD
A[Требование:\nучебный проект] --> B[Показать работу os/os.system]
B --> C[Сделать простой\nконсольный интерфейс]
C --> D[file_manager.py\nодин файл]
D --> E[Функции:\nlistdir/scandir/chdir,\nmkdir/makedirs/remove/rmdir,\nrename/replace/stat/access,\nenv/system/os.system]
E --> F[Пользователь видит\nпрямую связь кода и результата]
11.6. Пример без os и с os для одной задачи
Задача: создать папку и показать содержимое
Без Python (ручной PowerShell):
mkdir lesson_folder
dir
С Python (os):
import os
from pathlib import Path
current = Path.cwd()
os.mkdir(current / "lesson_folder")
for item in current.iterdir():
print(item.name)
Вывод: Python-скрипт даёт переиспользуемую логику, а не одноразовые ручные команды.
11.7. Разбор кода по шагам: создание файла через os.open
target = os.path.join(CURRENT_DIR, name)
fd = os.open(target, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
os.close(fd)
Пояснение:
os.path.joinформирует путь к новому файлу.os.O_CREAT— создать файл, если его нет.os.O_EXCL— не перезаписывать существующий (иначе исключение).os.O_WRONLY— открыть только на запись.os.close(fd)— обязательно закрыть дескриптор.
Образовательная ценность:
- показывает “низкоуровневую” работу с файлами через
os, а не толькоopen(...); - хорошо демонстрирует различие флагов открытия.