Создание инструмента командной строки с помощью Python (Click)
Этот материал описывает Penny — простой трекер расходов в командной строке, созданный на Python с использованием библиотеки Click. Penny позволяет пользователям добавлять, перечислять, суммировать и очищать расходы непосредственно из терминала, без необходимости веб-интерфейса или базы данных. Автор выбрал Click вместо встроенного в Python argparse из-за его более интуитивного подхода, основанного на декораторах, для определения команд и опций.Проект состоит из трех основных файлов: commands.py для логики отдельных команд, penny.py для группировки этих команд в единый инструмент командной строки и pyproject.toml для упаковки и определения точки входа. Penny хранит данные о расходах в обычном JSON-файле с именем expenses.json, читая и записывая в него при каждой операции. Команда add создает JSON-файл, если он не существует, добавляет новые расходы и сохраняет обновленный список, предоставляя цветное подтверждение.Команда list отображает сохраненные расходы в табличном формате, выдавая предупреждение, если расходы не найдены. Команда summary вычисляет и выводит общие суммы расходов по категориям и общую сумму, представляя результаты в виде отформатированного JSON. Команда clear включает запрос подтверждения перед перезаписью файла expenses.json пустым списком.Файл penny.py использует функциональность группировки Click для объединения всех команд под единым исполняемым файлом penny. Файл pyproject.toml настраивает эту группировку, делая Penny глобально устанавливаемым инструментом командной строки через pip install .. Автор подчеркивает преимущества декларативного стиля Click, пригодность JSON для простого хранения данных, важность мелких деталей пользовательского опыта и то, как группировка команд превращает скрипт в отточенное приложение командной строки.
commands.pyдля логики отдельных команд,penny.pyдля группировки этих команд в единый инструмент командной строки иpyproject.tomlдля упаковки и определения точки входа. Penny хранит данные о расходах в обычном JSON-файле с именемexpenses.json, читая и записывая в него при каждой операции. Командаaddсоздает JSON-файл, если он не существует, добавляет новые расходы и сохраняет обновленный список, предоставляя цветное подтверждение.Командаlistотображает сохраненные расходы в табличном формате, выдавая предупреждение, если расходы не найдены. Командаsummaryвычисляет и выводит общие суммы расходов по категориям и общую сумму, представляя результаты в виде отформатированного JSON. Командаclearвключает запрос подтверждения перед перезаписью файлаexpenses.jsonпустым списком.Файлpenny.pyиспользует функциональность группировки Click для объединения всех команд под единым исполняемым файломpenny. Файлpyproject.tomlнастраивает эту группировку, делая Penny глобально устанавливаемым инструментом командной строки черезpip install .. Автор подчеркивает преимущества декларативного стиля Click, пригодность JSON для простого хранения данных, важность мелких деталей пользовательского опыта и то, как группировка команд превращает скрипт в отточенное приложение командной строки.