Дополнительные возможности#
click.password_option(*param_decls, **attrs)
click.confirmation_option(*param_decls, **attrs)
click.version_option(version=None, *param_decls, **attrs)
click.echo
click.style
click.secho
click.clear
click.pause
click.prompt
click.confirm
click.echo_via_pager
click.progressbar
Декоратор click.password_option#
Декоратор click.password_option равнозначен такой опции:
@click.option("--password", "-p", prompt=True, hide_input=True, confirmation_prompt=True)
Пример использования:
@click.command()
@click.option("--username", "-u", prompt=True)
@click.password_option()
def cli(username, password):
print(username, password)
click.echo, click.style, click.secho#
Функция click.echo в целом работает как print, но при этом:
добавляет обработку цветовых кодов ANSI в Windows
автоматически скрывает коды ANSI, если вывод идет не в терминал
click.style добавляет возможность выводить текст в цвете. Использовать можно или так
click.echo(click.style('Hello World!', fg='green'))
Или использовать короткий вариант click.secho:
click.secho('Hello World!', fg='green')
click.progressbar#
def ping_ip_addresses(ip_addresses, count):
reachable = []
unreachable = []
with click.progressbar(ip_addresses, label="Пингую адреса") as bar:
for ip in bar:
if ping_ip(ip, count):
reachable.append(ip)
else:
unreachable.append(ip)
return reachable, unreachable
Вывод:
$ python example_03_ping_ip_list_progress_bar.py 8.8.8.8 8.8.4.4 10.1.1.1 192.168.100.1
Пингую адреса [####################################] 100%
IP-адрес 8.8.8.8 пингуется
IP-адрес 8.8.4.4 пингуется
IP-адрес 192.168.100.1 пингуется
IP-адрес 10.1.1.1 не пингуется
def send_command_to_devices(devices, command, limit):
results = []
with ThreadPoolExecutor(max_workers=limit) as executor:
futures = [
executor.submit(send_show_command, device, command) for device in devices
]
with click.progressbar(
length=len(futures), label="Connecting to devices"
) as bar:
for future in as_completed(futures):
results.append(future.result())
bar.update(1)
return results
click.clear#
Функция click.clear очищает экран. Удобно выполнять в начале работы скрипта.
def cli(pomodoros_to_run, work_minutes, short_break, long_break, set_size):
click.clear()
all_pomodoros = list(range(1, pomodoros_to_run + 1))
pomodoro_sets = sets_of_pomodoros(all_pomodoros, set_size)
for pomo_set in pomodoro_sets:
run_pomodoro_set(pomo_set, work_minutes, short_break, long_break)
click.pause#
Функция click.pause останавливает выполнение скрипта, выводит сообщение «Press any key to continue …» и ждет нажатия любой клавиши. Использовать можно в любом месте, таким образом
click.pause()