Обновить
0

Data engineer

Отправить сообщение
Этому явлению есть название — прокрастинация.
Я, когда писал диплом, вдруг нашел время провести небольшой ремонт в квартире.

Очень люблю один жизненный мульт на эту тему. Можно найти на ютубе по «сказание об обыденности».

А без костылей способа, чтобы было как в argparse и красиво, не находил.


1) В дополнение к вариантам выше:


import click

@click.command()
@click.argument('numbers', nargs=-1)
@click.option('--word')
def fancy_command(numbers, word):
    result = sum(int(s) for s in numbers)
    print('Numbers sum: {}. Word: {}'.format(result, word))

if __name__ == '__main__':
    fancy_command()

Получим:


$ python script.py 1 2 3 4 5 --word Hello
Numbers sum: 15. Word: Hello

2) Ну и костыльный способ:


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()

Получим:


$ python script.py --numbers 1 2 3
Numbers sum: 6
Спасибо за статью!

Занимаюсь ETL и анализом данных, разработчик. Сначала активно использовали argparse, потом мигрировали на Flask-Script. Сейчас комбинируем его с click.

Преимущества миграции на Flask-Script были:
+ меньше кода при создании команд;
+ возможность создавать вложенные команды, это позволяло разбивать их на подклассы. Удобно, когда команд становится более десятка;
+ нормальная документация;
— пришлось написать небольшую обвязку, чтобы все заработало. Кому-то это может показаться трудной задачей;
— не является стандартной библиотекой;

Я бы порекомендовал приглядеться к click. Это отличная замена argparse.
По опыту использования:
+ очень прост и удобен;
+ минимум кода;
+ куча классных встроенных возможностей: диалоги, группировки и др.
+ хорошая документация;
— не является стандартной библиотекой;

Из тяжеловесных инструментов для создания CLI-приложения порекомендовал бы взглянуть на Cement Framework. Сам не пользовался, но отзывы от знакомых были положительные.
Замечательная статья, спасибо!
Хочется еще посоветовать хороший тренажер для регулярок: regexcrossword.com

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность