14_Возникшие_сложности_и_ограничения.md - YaroslavGit28/os.sys-PY GitHub Wiki
14. Возникшие сложности и ограничения
Этот модуль фиксирует реальные ограничения учебного проекта и объясняет, почему они допустимы в рамках поставленной задачи.
14.1. Кроссплатформенность системных команд
Сложность:
- команды в
os.systemразличаются между ОС:- Windows:
explorer,start powershell,cls; - macOS:
open; - Linux:
xdg-open,clear.
- Windows:
Следствие:
- нужен условный код по платформе;
- одна и та же функция должна собирать разные команды.
Почему это нормально:
- это и есть учебная демонстрация адаптации Python-кода под ОС.
14.2. Ограничение удаления папок
Сложность:
os.rmdirудаляет только пустые каталоги.
Следствие:
- пользователь не может удалить непустую директорию одним действием;
- для “полного удаления” понадобились бы дополнительные функции/модули.
Почему это оставлено:
- проект специально избегает сложной логики;
- поведение безопаснее для учебного сценария.
14.3. Простая валидация ввода
Сложность:
- ввод пользователя может содержать неожиданные символы и некорректные пути.
Что сделано:
- запрещены пустые значения;
- ограничено использование слешей в именах там, где ожидается только имя.
Ограничение:
- валидация намеренно простая и не покрывает все возможные случаи.
14.4. Использование глобального состояния CURRENT_DIR
Сложность:
- глобальные переменные удобны, но с ростом проекта усложняют тестирование.
Почему оставлено:
- для маленького учебного скрипта это делает код короче и понятнее.
Если развивать проект:
- лучше перейти к классу менеджера состояния или передаче
Pathявно между функциями.
14.5. Ограничения интерфейса (только CLI)
Сложность:
- нет графического интерфейса;
- нет “богатой” навигации и предпросмотра.
Почему приемлемо:
- задача про
os/os.system, а не про GUI; - консоль позволяет сосредоточиться на библиотечных вызовах.
14.6. Диаграмма рисков и ограничений
mindmap
root((Ограничения проекта))
Кроссплатформенность
Разные команды OS
Разные shell-среды
Файловые операции
rmdir только для пустых папок
Права доступа
Ввод пользователя
Неверные имена
Неожиданные символы
Архитектура
Глобальное состояние
Один файл
14.7. Как ограничения влияют на учебную ценность
Парадоксально, но ограничения проекта делают его лучше для обучения:
- меньше отвлекающих деталей;
- каждый элемент напрямую демонстрирует
os/os.system; - быстрее прослеживается причинно-следственная связь между командой и результатом.
14.8. Разбор кода по шагам: почему нужен try/except
try:
os.rmdir(target)
print("Папка удалена")
except OSError as e:
print(f"Не удалось удалить: {e}")
Пояснение:
os.rmdirможет упасть по многим причинам (папка не пуста, нет прав, объект не папка).except OSErrorловит системные ошибки файловой операции.- Вместо аварийного завершения пользователь получает понятное сообщение.
Учебный вывод:
- обработка ошибок здесь не “дополнительная”, а обязательная часть работы с
os; - это формирует правильную привычку писать устойчивые скрипты.