Программа позволяет добавлять расходы, смотреть список операций в виде таблицы, получать статистику по категориям, выводить топ категорий, показывать последние расходы и удалять записи по ID.
Формат запуска:
python finlog.py <command> [arguments]- Добавлять расходы с категорией, суммой и комментарием
- Выводить все расходы в виде таблицы
- Показывать статистику расходов по категориям
- Показывать топ категорий по сумме расходов
- Удалять расходы по ID
- Показывать список доступных команд
- Показывать подробную инструкцию по использованию программы
- Python
- JSON
collectionstabulate
Программа написана на языке Python. Для хранения данных использован модуль JSON.
В проекте используются структуры из модуля collections: namedtuple, Counter, defaultdict, deque и ChainMap.
Использован сторонний модуль tabulate для красивого вывода расходов в табличной форме.
Чтобы запустить программу, откройте терминал и перейдите в папку проекта.
Например, если папка проекта лежит на рабочем столе:
Откройте терминал: Git Bash, Linux/macOS terminal или Windows PowerShell.
На Windows можно найти PowerShell через поиск: Windows PowerShell.
cd ~/Desktop/finlog_projectpython -m venv .venvЕсли на Linux/macOS команда python не работает, используйте:
python3 -m venv .venvДля Git Bash на Windows:
source .venv/Scripts/activateДля Linux/macOS:
source .venv/bin/activateДля Windows PowerShell:
.venv\Scripts\Activate.ps1При успешной активации в терминале появится надпись (.venv).
Подробно про активацию и виртуальную среду можете почитать по ссылкам:
- YouTube: https://www.youtube.com/watch?v=OvocRhD9WSA
- Сайт pythonchik.ru: https://pythonchik.ru/okruzhenie-i-pakety/virtualnoe-okruzhenie-python-venv
Перед запуском проекта установите зависимости из файла requirements.txt:
pip install -r requirements.txtВсё готово для дальнейшей работы.
После активации виртуальной среды вы можете запускать программу.
Общий формат запуска:
python finlog.py <command> [arguments]python finlog.py add <category> <amount> [comment]Аргументы:
| Аргумент | Описание |
|---|---|
category |
Категория расхода |
amount |
Сумма расхода, положительное число |
comment |
Комментарий к расходу, необязательно |
Примеры:
python finlog.py add food 250 бургер
python finlog.py add transport 20 маршруткаpython finlog.py listВыводит все сохранённые расходы в виде таблицы.
python finlog.py statsПоказывает сумму расходов по каждой категории и общую сумму всех расходов.
python finlog.py topПоказывает категории от самой дорогой к самой дешёвой.
python finlog.py lastПоказывает последние добавленные расходы.
Лимит вывода задаётся в настройках проекта.
python finlog.py delete <id>Аргументы:
| Аргумент | Описание |
|---|---|
id |
Номер расхода, который нужно удалить |
Пример:
python finlog.py delete 3python finlog.py commandsВыводит краткий список доступных команд.
python finlog.py helpВыводит подробную инструкцию по использованию программы.
- Сумма должна быть больше нуля.
- ID должен быть целым положительным числом.
- Комментарий можно писать из нескольких слов:
python finlog.py add food 250 бургер с сыром- Валюта вывода по умолчанию:
сом. - Данные сохраняются в JSON-файл и не теряются после закрытия программы.
Цель проекта — закрепить работу с модулем collections,
JSON-файлами и аргументами командной строки через создание небольшой CLI-утилиты.
В проекте используются основные структуры из collections:
namedtuple— для хранения одной записи расхода;Counter— для подсчёта топа категорий;defaultdict— для группировки и подсчёта расходов по категориям;deque— для вывода последних записей;ChainMap— для объединения настроек по умолчанию и пользовательских настроек.
Дополнительно проект помогает потренировать разделение кода по файлам, обработку ошибок, сохранение данных в JSON и оформление консольного вывода.