Python: цветной вывод в терминал
В большинстве современных терминалов можно выводить цветной и стилизованный текст. В Python для этого используют ANSI escape-последовательности или сторонний модуль termcolor.
Что нужно знать
Пример 1: ANSI escape-последовательности
print('\x1b[38;2;5;86;243m' + 'Hello' + '\x1b[0m')
Вывод
Hello
Логика работы видна на схеме:
Разберём управляющий код \x1b[38;2;5;86;243m:
\x1b— служебный escape-символ (то же самое можно записать как\033).38;2;r;g;b— задаёт цвет в формате RGB. В нашем случае5;86;243— синий оттенок.m— указывает на функцию SGR (Select Graphics Rendition), которая отвечает за оформление текста.
После напечатанного текста обязательно ставим \x1b[0m, иначе цвет «протечёт» на следующие строки.
Пример 2: модуль termcolor
from termcolor import colored
print(colored('Hello', 'blue'))
Вывод
Hello
Сторонний модуль termcolor (устанавливается через pip install termcolor) скрывает работу с escape-кодами. В функцию colored() передаются текст и название цвета — этого достаточно, чтобы получить раскрашенный результат.
Как это работает
Терминал распознаёт специальные последовательности символов начиная с \x1b[ и интерпретирует их как команды форматирования: цвет, фон, жирность, подчёркивание. termcolor упрощает запись таких команд за счёт удобного API и поддерживает дополнительные стили (bold, underline и др.).