52

Интересный Python #10: CLI-приложения

CLI-приложение (Command Line Interface) - это такое приложение, в котором все действия осуществляются с помощью командной строки, в которую вводятся команды и параметры.

Пример для Windows:

1. Откройте командную строку. Для этого нажмите Win + R, в открывшемся окне напишите cmd и от души приложитесь по кнопке Enter;

2. Введите команду tasklist и нажмите Enter. Вы увидите список запущенных процессов, их идентификаторы и объём памяти, которые они занимают;

3. Выполните команду tasklist /fi "memusage gt 200000", то есть добавьте к tasklist параметр /fi "memusage gt 200000". Вы увидите список процессов, занимающих в памяти более 200 000 килобайт.


Ну а если вы уже знакомы с Git, Docker и другими инструментами, то с их CLI вы наверняка имели дело.


С помощью библиотеки click вы легко сможете создавать свои CLI-приложения. В конце поста, как и всегда, будет тренировочное задание. Приятного чтения :)

Как установить click

1. Откройте терминал (командную строку);

2. Если умеете пользоваться виртуальным окружением, то создайте и активируйте его. Если нет, то пропустите этот шаг;

3. Выполните команду pip install click.

Документация

У click очень подробная и качественная документация. Ознакомиться с ней можно здесь.

В уроке мы рассмотрим лишь самые базовые возможности, но click - это очень мощная библиотека с обширной функциональностью. Она позволяет управлять вводом и выводом в консоль по аналогии с библиотеками, рассмотреными в прошлых уроках. Так что очень рекомендуем заглянуть в документацию, чтобы сформировать полное представление о том, что такое click.

Дальше будет много примеров кода. На Пикабу они выкладываются в виде скриншотов. Забрать их в виде текста можно здесь.

Вот так выглядит простейшее консольное приложение на click:

Запустите командную строку и выберите ту директорию, в которой содержится ваш скрипт с расширением .py. Сменить директорию можно с помощью команды cd.

Выполните несколько раз команду python main.py. Вместо main.py должно быть имя вашего скрипта. Каждый раз вы увидите в консоли новое случайное число.

Аргументы - это обязательные параметры, которые должны идти в определённом порядке. Передаются по позиции, то есть имя аргумента при передаче не указывается.


Опции - это необязательные параметры, которые могут идти в любом порядке. Передаются по имени, выглядят как --option-name [value].


Общий вид: command [options] <arguments>. То есть сначала передаются все опции, потом все аргументы.


Аргументы и опции добавляются к команде с помощью декораторов @click.argument и @click.option.

Теперь использовать скрипт можно так:

Отдельный вид опций - это флаги. Для них не нужно указывать никакого конкретного значения, они либо есть, либо их нет. Во многих консольных приложениях используется флаг --verbose («многословный»). Давайте сделаем так, чтобы при наличии такого флага в консоль выводилось не только число, но и небольшое сообщение.

Теперь использовать скрипт можно так:

click автоматически добавляет команду --help, которая выводит в консоль справочную информацию по командам, зарегистрированным с помощью @click.command. Попробуйте выполнить ваш скрипт с флагом --help, и вы увидите следующее:

При регистрации опции можно передать аргумент help, в котором будет содержаться справочная информация об этой опции.

Для аргументов справочную информацию указывать нельзя.

Напишите CLI-приложение, которое будет принимать в качестве аргумента строку и подсчитывать количество уникальных букв в нём.

Например, для строки 'Мама мыла раму' приложение выведет следующий результат:

Если передан флаг --ignore-case (игнорировать регистр символов), то результат должен быть таким:

А если ещё и передан флаг --sort, то таким:

Обратная связь

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


Код нужно обязательно представить в 2 форматах:

- изображение, сгенерированное на https://carbon.now.sh/;

- ссылка на код, сгенерированная через codepile.net или аналогичный сервис.

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества