import click
@click.command()
@click.option('--numbers', nargs=0)
@click.argument('numbers', nargs=-1)
def fancy_command(numbers):
result = sum(int(s) for s in numbers)
print('Numbers sum: {}'.format(result))
if __name__ == '__main__':
fancy_command()
Занимаюсь ETL и анализом данных, разработчик. Сначала активно использовали argparse, потом мигрировали на Flask-Script. Сейчас комбинируем его с click.
Преимущества миграции на Flask-Script были:
+ меньше кода при создании команд;
+ возможность создавать вложенные команды, это позволяло разбивать их на подклассы. Удобно, когда команд становится более десятка;
+ нормальная документация;
— пришлось написать небольшую обвязку, чтобы все заработало. Кому-то это может показаться трудной задачей;
— не является стандартной библиотекой;
Я бы порекомендовал приглядеться к click. Это отличная замена argparse.
По опыту использования:
+ очень прост и удобен;
+ минимум кода;
+ куча классных встроенных возможностей: диалоги, группировки и др.
+ хорошая документация;
— не является стандартной библиотекой;
Из тяжеловесных инструментов для создания CLI-приложения порекомендовал бы взглянуть на Cement Framework. Сам не пользовался, но отзывы от знакомых были положительные.
Я, когда писал диплом, вдруг нашел время провести небольшой ремонт в квартире.
Очень люблю один жизненный мульт на эту тему. Можно найти на ютубе по «сказание об обыденности».
А без костылей способа, чтобы было как в argparse и красиво, не находил.
1) В дополнение к вариантам выше:
Получим:
2) Ну и костыльный способ:
Получим:
Занимаюсь ETL и анализом данных, разработчик. Сначала активно использовали argparse, потом мигрировали на Flask-Script. Сейчас комбинируем его с click.
Преимущества миграции на Flask-Script были:
+ меньше кода при создании команд;
+ возможность создавать вложенные команды, это позволяло разбивать их на подклассы. Удобно, когда команд становится более десятка;
+ нормальная документация;
— пришлось написать небольшую обвязку, чтобы все заработало. Кому-то это может показаться трудной задачей;
— не является стандартной библиотекой;
Я бы порекомендовал приглядеться к click. Это отличная замена argparse.
По опыту использования:
+ очень прост и удобен;
+ минимум кода;
+ куча классных встроенных возможностей: диалоги, группировки и др.
+ хорошая документация;
— не является стандартной библиотекой;
Из тяжеловесных инструментов для создания CLI-приложения порекомендовал бы взглянуть на Cement Framework. Сам не пользовался, но отзывы от знакомых были положительные.
Хочется еще посоветовать хороший тренажер для регулярок: regexcrossword.com