Функция click.echo()
поддерживает цвета и стили ANSI. В Windows используется модуль colorama
.
_В первую очередь это означает, что:
click.echo()
автоматически удаляет цветовые коды ANSI, если поток не подключен к терминалу.click.echo()
будет прозрачно подключаться к терминалу в Windows и транслировать коды ANSI в вызовы API терминала. Это означает, что цвета будут работать в Windows так же, как и в других операционных системах.В Windows, модуль click
использует модуль colorama
без вызова метода colorama.init()
. Можно по-прежнему вызвать этот метод в своем коде, но это не обязательно.
Для стилизации строки можно использовать функцию click.style()
:
import click click.echo(click.style('Hello World!', fg='green')) click.echo(click.style('Some more text', bg='blue', fg='white')) click.echo(click.style('ATTENTION', blink=True, bold=True))
Комбинация функций click.echo()
и click.style()
также доступна как одна функция click.secho()
:
click.secho('Hello World!', fg='green') click.secho('Some more text', bg='blue', fg='white') click.secho('ATTENTION', blink=True, bold=True)
click.echo()
.click.style()
.click.secho()
объединяет в себе две предыдущих.click.echo()
:click.echo(message=None, file=None, nl=True, err=False, color=None)
Универсальная функция click.echo()
печатает сообщение message
и добавляет символ новой строки \n
в стандартный вывод stdout
или в файловый объект file
.
Функцию click.echo()
следует использовать вместо print()
, так как она обеспечивает лучшую поддержку различных данных, файлов и сред. По сравнению с print()
, она может следующее:
Описание аргументов функции click.echo()
:
message
: строка или байты для вывода. Остальные объекты преобразуются в строки.stdout
.bool
), пишет в stderr
вместо stdout
.bool
) вставляет новую строку \n
после сообщения. Включено по умолчанию.color (Optional[bool]) – Force showing or hiding colors and other styles. By default Click will remove color if the output does not look like an interactive terminal.
click.style()
:click.style(text, fg=None, bg=None, bold=None, dim=None, underline=None, overline=None, italic=None, blink=None, reverse=None, strikethrough=None, reset=True)
Функция click.style()
стилизует текст со стилями ANSI и возвращает новую строку. По умолчанию стиль является самодостаточным, что означает, что в конце строки выдается код сброса. Этого можно избежать, передав функции аргумент reset=False
.
click.echo(click.style('Hello World!', fg='green')) click.echo(click.style('ATTENTION!', blink=True)) click.echo(click.style('Some things', reverse=True, fg='cyan')) click.echo(click.style('More colors', fg=(255, 12, 128), bg=117))
Поддерживаемые названия цветов:
'black
' (может быть серым), 'red'
, 'green'
, 'yellow'
(может быть оранжевым), 'blue'
, 'magenta'
, 'cyan'
, 'white (может быть светло-серым)'
, 'bright_black'
, 'bright_red'
, 'bright_green'
, 'bright_yellow'
, 'bright_blue'
, 'bright_magenta'
, 'bright_cyan'
, 'bright_white'
;'reset'
(сбрасывается только цветовой код).Если терминал поддерживает эту функциональность, то цвет также может быть указан как:
Описание аргументов функции click.style()
:
text
: строка для стилизации.fg
: цвет переднего плана, может быть 'intили
(int, int, int)или
str`.bg
: цвет фона, может быть 'intили
(int, int, int)или
str`.bold
: (bool
), включает или отключает режим жирного шрифта.dim
: (bool
), включает или отключает режим затемнения. Это плохо поддерживается.underline
: (bool
), включает или отключает режим подчеркивания.overline
: (bool
), включает или отключает режим наложения.italic
: (bool
), включает или отключает режим курсива.blink
: (bool
), включает или отключает режим мигания.reverse
: (bool
), включает или отключает обратный рендеринг (передний план становится фоном и наоборот).strikethrough
: (bool
), включает или отключает зачеркивание текста.reset
: (bool
) по умолчанию в конце строки добавляется код сброса. Это означает, что стили не переносятся.Изменено в версии 8.0:
click.secho()
:click.secho(message=None, file=None, nl=True, err=False, color=None, **styles)
Функция click.secho()
объединяет click.echo()
и click.style()
в один вызов. Таким образом, следующие два вызова идентичны:
click.secho('Hello World!', fg='green') click.echo(click.style('Hello World!', fg='green'))
Все ключевые аргументы click.secho()
направляются в базовые функции в зависимости от того, с какой из них они работают. Другими словами аргумент **styles
- это ключевые аргументы функции click.style()
.
Аргумент text
, не являющееся строкой, преобразуется в строку str
, но байты передаются непосредственно в click.echo()
, без применения стиля. Если нужно стилизовать байты представляющие текст, то сначала необходимо вызвать bytes.decode()
.
Изменено в версии 8.0: сообщение, не являющееся строкой, преобразуется в строку. Байты передаются без применения стиля.