Все говорят, что простая в использовании библиотека командной строки Python: нажмите

задняя часть Python GitHub
Все говорят, что простая в использовании библиотека командной строки Python: нажмите
Автор: HelloGitHub-Prodesire

Пример кода, задействованный в этой статье, был синхронно обновлен доРепозиторий HelloGitHub-Team

Введение

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

И сегодняшнее знакомствоclickРечь идет об игре с командной строкой привычным для вас способом. Программа командной строки по существу определяет параметры и параметры обработки, и логика обработки параметров должна быть связана с определенными параметрами. Можно ли использовать функции и декораторы для связывания логики параметров обработки с определенными параметрами? иclickИменно так и используется.

本系列文章默认使用 Python 3 作为解释器进行讲解。
若你仍在使用 Python 2,请注意两者之间语法和库的使用差异哦~

2. Введение

click— это пакет Python для создания красивых программ командной строки комбинаторным способом с минимальным количеством кода. Он легко настраивается, а также работает из коробки.

Он разработан, чтобы сделать написание инструментов командной строки быстрым и увлекательным, а также предотвратить разочарование от невозможности реализовать предполагаемый API CLI. Он имеет следующие три характеристики:

  • Произвольные вложенные команды
  • Автоматически созданная справка
  • Поддержка ленивой загрузки подкоманд во время выполнения.

3. Быстрый старт

3.1 Бизнес-логика

Сначала определите бизнес-логику, вам не кажется немного невероятным?

либоargparseвсе ещеdocopt, бизнес-логика размещается на последнем шаге, ноclickНо это первый шаг. подумай об этомclickЭтот способ больше соответствует человеческому мышлению, верно? Независимо от того, какой фреймворк командной строки используется, в конечном счете нас интересует реализация бизнес-логики и сохранение всего остального.

Наши официальные примеры, например, представитьclickиспользование и философия. Предположим, что ввод в программу командной строкиnameиcount, функция состоит в том, чтобы напечатать имя указанное количество раз.

затем вhello.py, легко написать следующий код:

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)

Логика этого кода очень проста, просто циклcountраз, используйтеclick.echoРаспечататьname. в,click.echoиprintОн работает аналогично, но является более мощным и может хорошо обрабатывать Unicode и двоичные данные.

3.2 Определение параметров

Очевидно, нам нужноcountиnameопределить их соответствующую информацию параметров.

  • countСоответствует параметрам командной строки--count, тип — число, мы хотим, чтобы его значение по умолчанию было 1, когда параметр не указан
  • nameСоответствует параметрам командной строки--name, тип — строка, мы надеемся дать людям подсказку, когда параметры не указаны

использоватьclick, можно записать так:

from 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):
    ...

В приведенном выше примере:

  • 使用装饰器的方式,即定义了参数,又将之与处理逻辑绑定,这真是优雅。 иargparse,docoptДля сравнения, на один обязательный процесс меньше.
  • использоватьclick.commandвыражатьhelloэто обработка команды
  • использоватьclick.optionЧтобы определить параметры параметров
    • за--countНапример, используйтеdefaultчтобы указать значение по умолчанию. А так как значением по умолчанию является число, что, в свою очередь, подразумевает--countопция имеет номер типа
    • за--nameНапример, используйтеpromptчтобы указать подсказку, когда опция не введена
    • использоватьhelpуказать справочную информацию

Будь то способ декораторов или различные варианты поведения по умолчанию,clickВсе дело в том, чтобы писать как можно меньше кода, как говорится во введении, и делать весь процесс быстрым и увлекательным.

3.3 Прочесывание кода

использоватьclickСпособ очень простой, мы суммируем приведенный выше код, чтобы иметь более четкое представление:

# hello.py
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()

Если мы укажем времена и имена:

$ python3 hello.py --count 2 --name Eric
Hello Eric!
Hello Eric!

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

$ python3 hello.py
Your name: Eric
Hello Eric!

Мы также можем пройти--helpПараметры для просмотра автоматически сгенерированной справочной информации:

Usage: hello.py [OPTIONS]

  Simple program that greets NAME for a total of COUNT times.

Options:
  --count INTEGER  Number of greetings.
  --name TEXT      The person to greet.
  --help           Show this message and exit.

4. Резюме

clickИдея очень проста, определить функцию-обработчик и определить параметры через декоратор. Прелесть использования декораторов в том, что два шага определения и привязки объединены в один, что делает весь процесс плавным и шелковистым.

clickВ добавок кPythonicТо, как программа командной строки стала более элегантной и простой в использовании.argparseиdocoptВсе мощные функции. В следующих нескольких разделах мы постепенно приоткроем завесу над ним.

«Объяснение серии проектов с открытым исходным кодом»——Пусть больше не боятся люди, интересующиеся проектами с открытым исходным кодом, и пусть инициаторы проектов с открытым исходным кодом больше не остаются в одиночестве. Следите за нашими статьями, и вы откроете для себя радости программирования, насколько легко им пользоваться, и узнаете, как легко участвовать в проектах с открытым исходным кодом. Добро пожаловать, чтобы оставить сообщение, чтобы связаться с нами, присоединиться к нам, позволить большему количеству людей влюбиться в открытый исходный код и внести свой вклад в открытый исходный код~