storage module¶
- storage.ensure_data_dir()[исходный код]¶
Проверяет наличие директории для хранения данных и создает её при отсутствии.
Функция использует путь, указанный в глобальной переменной DATA_DIR. Если целевая папка (и все промежуточные директории) отсутствует в файловой системе, она будет создана автоматически.
Примечание
Функция опирается на внешнюю константу DATA_DIR, которая должна быть определена в модуле.
- Исключение:
OSError – Если создание директории невозможно из-за ограничений прав доступа или системных ошибок.
- storage.load_transactions()[исходный код]¶
Загружает список транзакций из CSV-файла и преобразует их в объекты Transaction.
Функция считывает данные из хранилища, выполняет десериализацию каждой строки и восстанавливает объекты класса
Transaction. Если директория данных или сам файл отсутствуют, возвращается пустой список.- Результат:
Список восстановленных объектов транзакций. В случае отсутствия файла или возникновения ошибки чтения возвращается пустой список [].
- Тип результата:
list[Transaction]
Примечание
Опирается на глобальные константы DATA_DIR и CSV_FILE.
Предполагает, что CSV-файл имеет корректные заголовки: „amount“, „category“, „date“, „description“, „transaction_type“.
- Исключение:
Exception – Если возникает ошибка при чтении файла или парсинге данных (например, поврежден формат CSV). Ошибка перехватывается, выводится в консоль, и функция возвращает пустой список.
- storage.save_transactions(transactions)[исходный код]¶
Сохраняет список транзакций в CSV-файл.
Функция выполняет дозапись (append) данных в файл. Если файл не существует, он создается вместе с заголовками столбцов. При пустом входном списке запись не производится.
- Параметры:
transactions (list[Transaction]) – Список объектов транзакций для сохранения. Каждый объект должен иметь метод to_dict().
Примечание
Использует глобальную константу CSV_FILE для определения пути к файлу.
Автоматически вызывает ensure_data_dir() перед началом записи.
Данные сохраняются в кодировке UTF-8.
- Исключение:
Exception – Если возникает ошибка при открытии файла или процессе записи (ошибка перехватывается внутри функции и выводится в консоль).
Пример
>>> tx = Transaction(100.0, "Еда", "2026-01-06", "Хлеб", "expense") >>> save_transactions([tx])