Как стать автором
Обновить

Комментарии 7

Мне подобных штук очень не хватало в Си, потиху пилил свой велосипед. Начиналось всё с кросплатформенного printf с цветом, а закончилось Winter Novel. Не забывайте вовремя остановиться! :-)

Мне больше всего нравится Click

Хелловорлд
import click

@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
              help='The person to greet.')
def hello(count, name):
    """Simple program that greets NAME for a total of COUNT times."""
    for x in range(count):
        click.echo('Hello %s!' % name)

if __name__ == '__main__':
    hello()

Нашел для себя не менее (в чем-то и более) декларативную штуку — docopt: https://github.com/docopt/docopt

Классно, что есть такие штуки. В свое время искал библиотеку для консольного gui, но они все были ужасны. Не помню, на чем остановился, но в итоге из-за необходимости в мелких украшательствах код для отображения интерфейса занимал больше строк и потребовал больше времени, чем собственно вся остальная логика. После того случая изучение фронтенда уже не кажется пустой тратой времени


Для cli есть очень неплохая библиотека от еще более крупной корпорации — google fire. Идеально интегрируется в любой код, работает удобно. Только вот из коробки нет возможности задавать однобуквенные алиасы (-v вместо --version) или я не разобрался как. Автодополнения вроде тоже не было
Для cli

В качестве иллюстрации использования python-prompt-toolkit — на нем сделан симпатичный терминал для работы с Kubernetes под названием kube-shell. (Писал о нём в этом обзоре.)

Что интересно, у этой утилиты вскоре появился конкурент на Go (kube-prompt), автор которой попутно «повторил» и саму библиотеку python-prompt-toolkit на том же Go — go-prompt. И она явно нашла своих пользователей (разработчиков) с 2300+ звёзд на GitHub и вот таким уже списком использующих её проектов.

За подборку спасибо. Действительно могут пригодиться. Даже знаю уже где попробую приткнуть.
А вот для прошлых моих юзкейсов большинство этих библиотек были бы бесполезны, кроме fabric наверное.
Правда я про него узнал когда активно уже использовал paramiko и connection pool, покрывая 10% нужной мне функциональности fabric без его удобства.


Не писал я скриптов с интерактивом, они "запустил и забыл" все. И запускаются то из cron то из под CI/CD то вообще один скрипт другой пускает или использует из него функции.


Так что наиболее важным всегда было написать внятный парсинг командной строки используя argparse или docopts.
Второй момент по значимости — это держать в голове мысль что твой скрипт может быть использован и как модуль.
Тогда сами по себе появляются классы/функции и мало-мальски оформленная архитектура.


Так что не только в замечательных библиотеках дело.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории