Интересный 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 или аналогичный сервис.
Программирование на python
885 постов11.9K подписчиков
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу