- Цель: Написать мини-файловую оболочку с возможностью введения команд
- Библиотеки: os, os.path, pathlib, logging, shutill,re
- Допущения:
- Имена файлов и дирректорий не могут содержать пробелы и кавычки
- Успешное выполнение команд логгируется,но не выводится
- При ошибках выводиться название ошибки и оно жн логгируется
- Не известные флавги игнорируются
- Чему я научился:
- Работа с файловой системой средствами Python (os, shutil, pathlib)
- Обработка исключений и ошибок
- Логирование операций с временными метками
- Нормалитзация путей файловой системы
- Рекурсивные операции с каталогами
- Пользователь вводит комнду (или exit, если хочет завершить работу программы)
- Происходт разбиение выражения с помощью сплита
- Обработка команд:
- ls - показывает содержимое директории
- Если путь не указан будет показана текущая директория
- Флаг
-lвключает подробный вывод (права, размер, дата)
- cd - изменение текущей директории
- Поддержка специальных путей:
..~
- Поддержка специальных путей:
- cat - вывод содержимого файла
- Проверка что файл существует и не является директорией
- cp - копирование файлов/директорий
- Проверка существования источника
- Для директорий в требуется флаг
-rдля рекурсивного копирования
- mv - перемещение/переименование
- Проверка существования источника
- rm - удаление файлов/директорий
- Защита от удаления системных директорий (/, ..,.)
- Для дирикторий требуется флаг
-r
- grep - поиск строк соотвествующих шаблону
- Поддержка опции -r рекурсивный поиск в поддиректориях.
- Поддержка опции -i поиск без учёта регистра.
- Логирование:
- Каждая команда записывается в shell.log с временной меткой
- Фиксируется успех/неудача выполнения и сообщения об ошибках
- Обработка ошибок:
- Все операции обернуты в try/except блоки
- Пользователю выводятся сообщения об ошибках -Ошибки не приводят к падению оболочки
py -m src.main
python -m pytest tests/path
exit