Как использовать библиотеку Colorama для окрашивания вывода командной строки

Замечательно создавать программы командной строки: они выполняют свою работу, не тратя часы на то, чтобы заставить работать графический интерфейс. Но иногда было бы лучше иметь более привлекательную программу, которую невозможно реализовать, используя только функцию print.

Хорошим компромиссом является использование библиотеки colorama. Это позволяет вам очень легко раскрашивать строки, написанные на терминале, и вы будете удивлены, насколько это может улучшить внешний вид вашей программы.

Итак, давайте посмотрим, как его использовать!

Как это работает?

Принцип работы библиотеки очень прост. Он использует последовательности escape-символов ANSI. Когда терминал читает одну из этих последовательностей, она не записывается. Вместо этого терминал получает указание использовать другой цвет (или шрифт) для следующего вывода.

Например, строка '\033[92m' представляет зеленый цвет, а '\033[0m' используется для возврата к стандартному цвету терминала.

Таким образом, следующий код напечатает "Hello World" зеленым цветом, а затем восстановит исходный цвет:

GREEN = '\033[92m'
END_COLOR = '\033[0m'
print(GREEN + "Hello World" + END_COLOR)

Примечание. К сожалению, этот код не работает в командной строке Windows, но вы все равно можете использовать библиотеку Colorama!

Использование Колорамы

Теперь, когда мы понимаем, как работает библиотека, давайте посмотрим, как ее использовать!

Начнем с установки библиотеки:

pip install colorama

Теперь мы можем начать кодировать. Рекомендуется (и обязательно, если вы работаете в Windows) добавить следующий код в начало скрипта:

from colorama import init
init()

Это используется, чтобы убедиться, что командная строка Windows правильно обрабатывает последовательности ANSA. В противном случае он просто распечатает последовательность символов.

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

Теперь мы можем начать пользоваться библиотекой. Есть три основных класса:

  • Fore используется для изменения цвета текста;
  • Style , чтобы изменить яркость текста;
  • Back , чтобы изменить фон текста (т.е. выделить текст).

Изменение цвета

Мы можем начать с изменения цвета текста.

Colorama позволяет использовать восемь различных цветов: черный, красный, зеленый, желтый, синий, пурпурный, голубой, белый. Они реализованы как переменные в классе Fore. Их название — это название цвета, написанное заглавными буквами. Например:

from colorama import Fore, init
init()
print('Now is not colored')
print(Fore.RED + 'some red text')
print(Fore.GREEN + 'some green text')
print(Fore.MAGENTA + 'some magenta text')
print(Fore.RESET + 'Back to normal')

Как видите, мы также использовали другую переменную, RESET. это используется для восстановления исходного цвета текста.

Изменение фона

Следующий класс, который мы увидим, это Back. Это реализует то же ключевое слово, что и класс Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.

Однако в этом случае цвет будет использоваться для изменения фона строки (т.е. для выделения текста). Например:

from colorama import Back, init
init()
print('Now is not highlighted')
print(Back.RED + 'some red background')
print(Back.GREEN + 'some green background')
print(Back.MAGENTA + 'some magenta background')
print(Back.RESET + 'Back to normal')

Изменение яркости

Наконец, мы можем использовать класс Style для изменения яркости вывода.

В этом классе есть три ключевых слова:

  • BRIGHT сделать текст ярким;
  • DIM сделать текст тусклым (хотя выглядит как обычный текст);
  • NORMAL, чтобы иметь нормальную яркость.
from colorama import Style, init
init()
print('Normal text')
print(Style.BRIGHT + 'Bright text')
print(Style.NORMAL + 'Normal text')

Кроме того, этот класс также реализует ключевое слово RESET_ALL, которое используется для сброса всего (яркости, цвета, фона) к их нормальным значениям.

from colorama import Fore, Back, Style, init
init()
print(Style.BRIGHT + 'Now the text is bright')
print(Fore.RED + 'Now the text is bright and red')
print(Back.GREEN + 'Now the text is bright, red and with green      background')
print(Style.RESET_ALL + 'Now everything is back to normal')

Заключение

Спасибо, что дочитали до конца! Если вы хотите узнать больше о библиотеке Colorama, ознакомьтесь с официальной документацией:



Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.