Аргументы#

Аргументы создаются с помощью декоратора @click.argument:

@click.argument(name, type=None, required=True, default=None, nargs=None)

В самом простом случае, достаточно указать только имя аргумента:

@click.command()
@click.argument("name")
def cli(name):
    """Print NAME"""
    print(name)

Так будет выглядеть help скрипта:

$ python basics_01.py --help
Usage: basics_01.py [OPTIONS] NAME

  Print NAME

Options:
  --help  Show this message and exit.

И так вызов:

$ python basics_01.py R2D2
R2D2

Переменное количество аргументов#

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

Пример использования nargs

import subprocess
import click


def ping_ip(ip_address):
    reply = subprocess.run(
        f"ping -c 2 -n {ip_address}",
        shell=True,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        encoding="utf-8",
    )
    if reply.returncode == 0:
        return True
    else:
        return False


@click.command()
@click.argument("ip_addresses", nargs=-1, required=True)
def cli(ip_addresses):
    """
    Ping IP_ADDRESSES
    """
    for ip in ip_addresses:
        if ping_ip(ip):
            print(f"IP-адрес {ip:15} пингуется")
        else:
            print(f"IP-адрес {ip:15} не пингуется")


if __name__ == "__main__":
    cli()