Рекламное объявление

Click - это пакет Python для написания интерфейсов командной строки. Он создает прекрасную документацию для вас и позволяет вам создавать интерфейсы командной строки всего за одну строку кода. Короче говоря, это здорово и может помочь поднять ваши программы на новый уровень.

Вот как вы можете использовать его для оживления ваших проектов Python.

Написание программ командной строки без клика

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

Нет ничего плохого в написании собственного кода, и это отличный способ изучить Python, но Click позволяет вам следовать принципам «не повторяйся» (DRY). Без Click вы будете писать код, который хрупок и требует много обслуживания, когда бы ни происходили какие-либо изменения.

instagram viewer

Вот простой интерфейс командной строки, кодированный без Click:

импорт системы. import random def do_work (): функция для обработки использования командной строки args = sys.argv args = args [1:] # Первым элементом args является имя файла, если len (args) == 0: print ('Вы не передали никаких команд в!') иначе: для аргументов in in: if a == '--help': print ('Основная программа командной строки') print ('Опции:') print ('- -помощь -> показать это основное меню справки. ') print (' --monty -> показать цитату из Monty Python. ') print (' --veg -> показать случайный овощ ') elif a ==' --monty ': print (' Что это, тогда? "Роман римлянин дом"? Люди называют римлянами, они идут, дом? ') Elif a ==' --veg ': print (random.choice ([' Морковь ',' Картофель ',' Репа '])) else: print (' Нераспознанный аргумент. ') if __name__ ==' __main__ ': do_work ()
Пример интерфейса командной строки Python

Эти 27 строк Python работают хорошо, но очень хрупки. Любые изменения, которые вы вносите в свою программу, потребуют много другого вспомогательного кода для изменения. Если вы измените имя аргумента, вам необходимо обновить справочную информацию. Этот код может легко выйти из-под контроля.

Вот та же логика с Click:

импорт нажмите. импортировать случайный @ click.command () @ click.option ('- monty', default = False, help = 'Показать цитату из Monty Python.') @ click.option ('- veg', default = False, help = 'Показать случайный овощ.') def do_work (monty, veg): пример Basic Click будет следовать вашим командам, если monty: print («Что это, тогда? "Роман римлянин дом"? Люди называют римлянами, они идут, дом? '), Если veg: print (random.choice ([' Морковь ',' Картофель ',' Репа '])) if __name__ ==' __main__ ': do_work ()

В этом примере Click реализована та же логика в 16 строках кода. Для вас анализируются аргументы, и создается экран справки:

Python Click автоматически сгенерированный экран справки

Это базовое сравнение показывает, сколько времени и усилий вы можете сэкономить, используя такие программы, как Click. Хотя интерфейс командной строки может казаться одинаковым для конечного пользователя, базовый код проще, и вы сэкономите много времени на кодировании. Любые изменения или обновления, которые вы напишите в будущем, также значительно увеличат время разработки.

Начало работы с Click for Python

Перед использованием Click вы можете настроить виртуальную среду Узнайте, как использовать виртуальную среду PythonНезависимо от того, являетесь ли вы опытным разработчиком Python или только начинаете, изучение настройки виртуальной среды крайне важно для любого проекта Python. Подробнее . Это остановит конфликты ваших пакетов Python с системным Python или другими проектами, над которыми вы можете работать. Вы могли бы также попробуйте Python в вашем браузере Попробуйте Python в вашем браузере с помощью этих бесплатных интерактивных оболочек онлайнПросматриваете ли вы эти примеры Python или просматриваете основы массивов и списков, вы можете протестировать код прямо в своем браузере. Вот лучшие онлайн переводчики Python, которые мы нашли. Подробнее если вы хотите поиграть с Python и нажмите.

Наконец, убедитесь, что вы используете Python версии 3. Можно использовать Click с Python версии 2, но эти примеры приведены в Python 3. Узнайте больше о различия между Python 2 и Python 3.

Когда все будет готово, установите Click из командной строки, используя PIP (как установить PIP для Python):

pip install click

Написание вашей программы первого клика

В текстовом редакторе начните с импорта Click:

импорт нажмите

После импорта создайте метод и основной входная точка. наш Руководство по Python OOP Рассмотрим их более подробно, но они предоставляют место для хранения вашего кода и способ запуска Python:

импорт нажмите. import random def veg (): Базовый метод возвращает случайную растительную печать (random.choice (['Морковь', 'Картофель', 'Репа', 'Пастернак'])), если __name__ == '__main__': veg ()

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

Сохранить это как click_example.pyи затем запустите его в командной строке (после перехода к его местоположению):

python click_example.py

Вы должны увидеть случайное название овоща. Давайте улучшим вещи, добавив Click. Измените свой код, чтобы включить декораторы Click и для цикл:

@ Click.command () @ click.option ('- total', default = 3, help = 'Количество овощей для вывода.') def veg (total): базовый метод возвращает случайный овощ для числа в диапазоне (total): print (random.choice (['Carrot', 'Potato', 'Turnip', 'Parsnip'])), если __name__ == '__main__': veg ()

После запуска вы увидите три случайных овоща.

Давайте разберем эти изменения. @ Click.command () Настройка декоратора Нажмите для работы с функцией, следующей сразу за декоратором. В этом случае это Век () функция. Это необходимо для каждого метода, который вы хотите использовать с Click.

@ click.option Декоратор настраивает щелчок, чтобы принять параметры из командной строки, которые он передаст вашему методу. Здесь используются три аргумента:

  1. -Всего: Это имя командной строки для Всего аргумент.
  2. по умолчанию: Если вы не указали общий аргумент при использовании сценария, Click будет использовать значение по умолчанию.
  3. Помогите: Короткое предложение, объясняющее, как использовать вашу программу.

Давайте посмотрим Нажмите в действии. Из командной строки запустите ваш скрипт, но передайте Всего аргумент как это:

python click_example.py --total 10

Установив - всего 10 из командной строки ваш скрипт выведет десять случайных овощей.

Если вы проходите в -Помогите flag, вы увидите красивую страницу справки вместе с опциями, которые вы можете использовать:

python click_example.py --help
Python Нажмите справку

Добавление дополнительных команд

Можно использовать много Click декораторов для одной и той же функции. Добавьте еще один вариант щелчка к Вег функция:

@ click.option ('- соус', по умолчанию = False, help = 'Добавить "с соусом" к овощам.')

Не забудьте передать это в метод:

def veg (всего, соус):

Теперь, когда вы запустите свой файл, вы можете передать в подливка флаг:

python click_example.py --gravy y

Экран справки также изменился:

Экран справки Python Click

Вот весь код (с небольшим рефакторингом для аккуратности):

импорт нажмите. импортировать случайный @ click.command () @ click.option ('- соус', по умолчанию = False, help = 'Добавить "с соусом" к овощам.') @ click.option ('- total', default = 3, help = 'Количество овощей для вывода.') def veg (total, gravy): базовый метод возвращает случайный овощ для числа в диапазоне (total): choice = random.choice (['Морковь', 'Картофель', 'Репа', 'Пастернак']) if gravy: print (f '{choice} with gravy') else: print (choice) if __name__ == '__main__': veg ()

Еще больше параметров клика

Как только вы знаете основы, вы можете начать смотреть на более сложные варианты Click. В этом примере вы узнаете, как передать несколько значений одному аргументу, который Click преобразует в кортеж. Вы можете узнать больше о кортежах в нашем руководство к словарю Python.

Создайте новый файл с именем click_example_2.py. Вот стартовый код, который вам нужен:

импорт нажмите. импортировать случайный @ click.command () def add (): основной метод сложит два числа вместе. пройти, если __name__ == '__main__': add ()

Здесь нет ничего нового. В предыдущем разделе этот код подробно описан. Добавить @ click.option называется чисел:

@ click.option ('- numbers', nargs = 2, type = int, help = 'Добавить два числа вместе.')

Единственный новый код здесь nargs = 2и тип = INT параметры. Это говорит Нажмите, чтобы принять два значения для чисел вариант, и что они оба должны быть целыми числами типа. Вы можете изменить его на любой номер или (действительный) тип данных, который вам нравится.

Наконец, измените добавлять способ принять чисел аргумент, и сделайте некоторую обработку с ними:

def add (numbers): основной метод сложит два числа вместе. результат = числа [0] + числа [1] печать (f '{числа [0]} + {числа [1]} = {результат}')

Каждое передаваемое вами значение доступно через чисел объект. Вот как использовать его в командной строке:

python click_example_2.py --numbers 1 2
Python Нажмите Nargs результат

Click является решением для утилит Python

Как вы уже видели, Click прост в использовании, но очень мощный. Хотя эти примеры охватывают только самые основы Click, есть гораздо больше возможностей, о которых вы можете узнать теперь, когда вы хорошо разбираетесь в основах.

Если вы ищете какие-то проекты на Python, чтобы практиковать свои новые найденные навыки, почему бы не изучить как управлять Arduino с помощью Python Как программировать и управлять Arduino с помощью PythonК сожалению, невозможно напрямую программировать Arduino на Python, но вы можете управлять им через USB с помощью программы Python. Вот как. Подробнее или как насчет чтение и запись в Google Sheets с помощью Python Как читать и писать в Google Sheets с PythonPython может показаться странным и необычным, однако его легко изучить и использовать. В этой статье я покажу вам, как читать и писать в Google Sheets с использованием Python. Подробнее ? Любой из этих проектов будет идеальным для преобразования в Click!

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