Сообщить об ошибке.

Cтиль и цвета при выводе текста в терминал

Функция 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)

Описание API функций вывода и стилизации текста.


Универсальная функция печати click.echo():

click.echo(message=None, file=None, nl=True, 
            err=False, color=None)

Универсальная функция click.echo() печатает сообщение message и добавляет символ новой строки \n в стандартный вывод stdout или в файловый объект file.

Функцию click.echo() следует использовать вместо print(), так как она обеспечивает лучшую поддержку различных данных, файлов и сред. По сравнению с print(), она может следующее:

  • Гарантирует правильную кодировку при выводе на печать в Linux.
  • Поддерживает Unicode в консоли Windows.
  • Поддерживает запись данных в текстовый файл.
  • Поддерживает цвета и стили в Windows.
  • Удаляет коды цвета и стиля ANSI, если вывод не похож на интерактивный терминал.
  • Всегда сбрасывает вывод.

Описание аргументов функции click.echo():

  • message: строка или байты для вывода. Остальные объекты преобразуются в строки.
  • file: файловый объект, в который нужно записать. По умолчанию используется стандартный вывод stdout.
  • err (bool), пишет в stderr вместо stdout.
  • nl (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' (сбрасывается только цветовой код).

Если терминал поддерживает эту функциональность, то цвет также может быть указан как:

  • Целое число в интервале [0, 255]. Терминал должен поддерживать режим 8 бит/256 цветов.
  • Кортеж RGB из трех целых чисел в интервале [0, 255]. Терминал должен поддерживать 24-битный/полноцветный режим.

Описание аргументов функции 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:

  • Сообщение, не являющееся строкой, преобразуется в строку.
  • Добавлена ​​поддержка цветовых кодов 256 и RGB.
  • Добавлены параметры зачеркивания, курсива и наложения.

Функция 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: сообщение, не являющееся строкой, преобразуется в строку. Байты передаются без применения стиля.