Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Лабораторная работа 2

Вариант: Базовый+grep

  • Цель: Написать мини-файловую оболочку с возможностью введения команд
  • Библиотеки: os, os.path, pathlib, logging, shutill,re
  • Допущения:
    • Имена файлов и дирректорий не могут содержать пробелы и кавычки
    • Успешное выполнение команд логгируется,но не выводится
    • При ошибках выводиться название ошибки и оно жн логгируется
    • Не известные флавги игнорируются
  • Чему я научился:
    • Работа с файловой системой средствами Python (os, shutil, pathlib)
    • Обработка исключений и ошибок
    • Логирование операций с временными метками
    • Нормалитзация путей файловой системы
    • Рекурсивные операции с каталогами

Алгоритм решения

  1. Пользователь вводит комнду (или exit, если хочет завершить работу программы)
  2. Происходт разбиение выражения с помощью сплита
  3. Обработка команд:
  • ls - показывает содержимое директории
    • Если путь не указан будет показана текущая директория
    • Флаг -l включает подробный вывод (права, размер, дата)
  • cd - изменение текущей директории
    • Поддержка специальных путей: .. ~
  • cat - вывод содержимого файла
    • Проверка что файл существует и не является директорией
  • cp - копирование файлов/директорий
    • Проверка существования источника
    • Для директорий в требуется флаг -r для рекурсивного копирования
  • mv - перемещение/переименование
    • Проверка существования источника
  • rm - удаление файлов/директорий
    • Защита от удаления системных директорий (/, ..,.)
    • Для дирикторий требуется флаг -r
  • grep - поиск строк соотвествующих шаблону
  • Поддержка опции -r рекурсивный поиск в поддиректориях.
  • Поддержка опции -i поиск без учёта регистра.
  1. Логирование:
  • Каждая команда записывается в shell.log с временной меткой
  • Фиксируется успех/неудача выполнения и сообщения об ошибках
  1. Обработка ошибок:
  • Все операции обернуты в try/except блоки
  • Пользователю выводятся сообщения об ошибках -Ошибки не приводят к падению оболочки

Запустить

py -m src.main

Запустить тесты

python -m pytest tests/path

Завершить

exit

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages