Files

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/.)


Лицензия

MIT © 2026.