3.7 KiB
3.7 KiB
Практическое задание №3
Память и подтверждение действий
Описание
В этом проекте реализована простая консольная утилита, которая демонстрирует работу с памятью (сохранение данных в файл) и подтверждением пользовательских действий.
Основные возможности:
- Сохранение введённых пользователем строк в JSON‑файл.
- Загрузка ранее сохранённого списка строк при запуске программы.
- Подтверждение удаления элемента из памяти через диалог «Да/Нет».
- Красивый вывод сообщений и таблиц с помощью библиотеки
rich.
Структура проекта
memory_confirm/
├── data.json # Хранилище (создаётся при первом запуске)
├── main.py # Точка входа
└── utils.py # Вспомогательные функции
main.py– основной скрипт, который запускает CLI‑интерфейс.utils.py– содержит функции для чтения/записи JSON и подтверждения действий.
Установка зависимостей
# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установите зависимости из requirements.txt
pip install -r requirements.txt
requirements.txt содержит:
rich>=13.0.0
Если файла requirements.txt нет, установите вручную:
pip install rich
Запуск программы
1. Через команду
python main.py
После запуска вы увидите меню:
=== Меню ===
1. Добавить строку
2. Показать все строки
3. Удалить строку
4. Выход
Выберите действие:
2. Пример использования
> python main.py
=== Меню ===
1. Добавить строку
2. Показать все строки
3. Удалить строку
4. Выход
Выберите действие: 1
Введите строку для сохранения: Hello, world!
✅ Строка успешно добавлена.
=== Меню ===
...
Удаление
> python main.py
... (выбираем пункт 3)
Введите номер строки для удаления: 2
Вы уверены, что хотите удалить строку "Пример"? [y/N]: y
✅ Строка удалена.
Как это работает
utils.load_data()читаетdata.json. Если файл отсутствует – создаётся пустой список.utils.save_data(data)сохраняет список в JSON‑файл с отступом 4 пробела.utils.confirm(prompt)выводит запрос черезrich.prompt.Prompt.ask, ожидая ответаy/n.
Тесты
Для проверки корректности работы можно запустить:
python -m unittest discover tests
(Если тестовые файлы находятся в каталоге tests/.)