
Для изменения цвета текста чаще всего используют управляющие коды ANSI. Например, чтобы вывести красный текст, достаточно использовать строку ‘\033[31mТекст\033[0m’, где 31 – код красного цвета, а 0 – сброс форматирования. Это работает в терминалах Linux, macOS и большинстве эмуляторов консоли Windows 10+.
В кроссплатформенных проектах рекомендуется использовать библиотеку colorama, которая обеспечивает поддержку ANSI-кодов в Windows. После вызова init() можно использовать константы, такие как Fore.RED, без необходимости вручную прописывать escape-последовательности.
Для более гибкого управления цветами и стилями подойдёт библиотека rich. Она поддерживает не только цвета, но и стили, таблицы и даже Markdown. Команда print(«[bold green]Успех[/]») выведет текст зелёным цветом с жирным начертанием.
Важно учитывать поддержку ANSI-цветов в используемой среде. Некоторые среды IDE, например IDLE или старые версии Windows CMD, могут игнорировать управляющие последовательности. Для таких случаев можно использовать GUI-библиотеки, например tkinter или PyQt, для отображения цветного текста в графическом интерфейсе.
Как изменить цвет текста в терминале с помощью ANSI-кодов

ANSI-коды позволяют задавать цвет текста в терминале с помощью управляющих последовательностей. Они начинаются с символа ESC (код \033) и включают параметры, разделённые точкой с запятой, за которыми следует буква m.
Формат кода: \033[Параметрыm. Например, \033[31m – красный цвет текста.
Ниже приведены основные параметры для изменения цвета текста:
| Код | Описание |
|---|---|
| 30 | Чёрный |
| 31 | Красный |
| 32 | Зелёный |
| 33 | Жёлтый |
| 34 | Синий |
| 35 | Пурпурный |
| 36 | Голубой |
| 37 | Белый |
| 0 | Сброс стиля |
print("\033[32mЗелёный текст\033[0m")
Комбинации можно усиливать. Например, \033[1;31m задаёт яркий красный, где 1 – параметр интенсивности.
Для фона используются коды от 40 до 47. Пример красного текста на жёлтом фоне:
print("\033[31;43mКрасный на жёлтом\033[0m")
Применение библиотеки colorama для окраски текста
Библиотека colorama предоставляет простой способ изменения цвета текста и фона в терминале Windows, а также на Unix-системах. Для начала требуется установка через pip install colorama.
После установки необходимо выполнить инициализацию с помощью init(). Это активирует поддержку ANSI-кодов на Windows:
from colorama import init, Fore, Back, Style
init()
Для изменения цвета текста используются константы из модуля Fore. Например, Fore.RED делает текст красным:
print(Fore.RED + "Ошибка: доступ запрещён")
Чтобы задать цвет фона, применяются значения из Back. Пример с жёлтым фоном:
print(Back.YELLOW + "Внимание!")
Для сброса всех стилей используется Style.RESET_ALL. Это необходимо для предотвращения наследования цвета следующими строками:
print(Fore.GREEN + "Готово" + Style.RESET_ALL)
Также доступны стили текста: Style.DIM, Style.NORMAL и Style.BRIGHT. Например, яркий синий текст:
print(Style.BRIGHT + Fore.BLUE + "Информация")
Colorama не изменяет стандартные функции Python, поэтому все изменения применяются только при явном указании стиля и не сохраняются между вызовами, если не указать иное. Рекомендуется всегда сбрасывать стиль вручную, чтобы избежать неожиданных эффектов отображения.
Библиотека termcolor предоставляет простой способ раскрасить текст в терминале без необходимости вручную управлять ANSI-кодами. Установка производится через pip:
pip install termcolor
Основная функция – colored(), которая принимает строку и параметры форматирования:
from termcolor import colored
print(colored("Пример текста", color="green", on_color="on_red", attrs=["bold"]))
Поддерживаются следующие параметры:
- color: ‘grey’, ‘red’, ‘green’, ‘yellow’, ‘blue’, ‘magenta’, ‘cyan’, ‘white’
- on_color: ‘on_grey’, ‘on_red’, ‘on_green’, ‘on_yellow’, ‘on_blue’, ‘on_magenta’, ‘on_cyan’, ‘on_white’
- attrs: ‘bold’, ‘dark’, ‘underline’, ‘blink’, ‘reverse’, ‘concealed’
Пример применения всех параметров:
print(colored("Уведомление", color="yellow", on_color="on_blue", attrs=["underline"]))
Если необходимо часто применять одинаковые параметры, создайте вспомогательную функцию:
def info(text):
return colored(text, color="cyan", attrs=["bold"])
print(info("Системное сообщение"))
termcolor не работает в Windows без поддержки ANSI. Для корректного отображения на этой платформе рекомендуется использовать совместно с colorama:
from colorama import init
init()
Поддержка вложенного форматирования отсутствует. Каждый вызов colored() форматирует одну строку. Для форматирования нескольких частей текста – объединяйте их вручную:
print(colored("Внимание:", "red") + " " + colored("Ошибка доступа", "yellow"))
Сравнение методов окрашивания текста в командной строке Windows и Linux
Окрашивание текста в Python реализуется по-разному в зависимости от операционной системы. В Windows консоль по умолчанию не поддерживает ANSI escape-коды, в отличие от Linux. Это требует использования разных подходов и библиотек.
- В Linux ANSI escape-коды работают «из коробки», что позволяет использовать их напрямую без сторонних библиотек.
Пример с ANSI-кодами, подходящий только для Linux (или Windows с включённой поддержкой):
print("\033[91mКрасный текст\033[0m")
На Windows этот код без инициализации colorama не даст цвет. Используйте:
from colorama import init, Fore
init()
print(Fore.RED + 'Красный текст')
- colorama автоматически преобразует ANSI-последовательности в Windows API-вызовы, обеспечивая совместимость.
- termcolor и colored опираются на ANSI, поэтому требуют
coloramaдля корректной работы в Windows. - Для кроссплатформенного кода – всегда используйте
colorama.init()в начале программы.
- На Linux предпочтительно использовать ANSI напрямую – меньше зависимостей и выше производительность.
- На Windows – использовать
coloramaили взаимодействовать с консолью черезctypesдля низкоуровневого управления (сложнее, но гибче).
Изменение цвета текста в Jupyter Notebook

В Jupyter Notebook можно изменять цвет текста с помощью HTML и Markdown. Ячейки типа Markdown поддерживают HTML-теги, что позволяет напрямую управлять стилями текста.
Для задания цвета используйте тег <span> с атрибутом style. Пример:
<span style="color: red;">Этот текст будет красным</span>
Цвет можно задавать по названию (red, blue, green) или в формате HEX и RGB:
<span style="color: #228B22;">Зелёный текст (HEX)</span>
<span style="color: rgb(0, 128, 255);">Синий текст (RGB)</span>
Также можно комбинировать цвет с другими свойствами, например, размером шрифта:
<span style="color: orange; font-size: 18px;">Оранжевый текст крупного размера</span>
from IPython.display import HTML, display
display(HTML('<span style="color: purple;">Фиолетовый текст из ячейки кода</span>'))
Эти методы позволяют точно контролировать визуальное оформление текста без сторонних библиотек.
Окрашивание текста в логах с использованием logging и colorlog

Установка colorlog производится через pip:
pip install colorlog
После установки можно настроить окрашивание сообщений в зависимости от их уровня. Пример конфигурации логгера с использованием colorlog:
import logging
import colorlog
# Создаем объект логгера
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
# Настройка формата логов с цветом
formatter = colorlog.ColoredFormatter(
'%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
log_colors={
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'bold_red',
}
)
# Создание консольного обработчика
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
# Добавление обработчика в логгер
logger.addHandler(console_handler)
# Пример логирования с разными уровнями
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
В приведенном примере создается кастомный логгер, который отображает различные уровни сообщений в разных цветах. Важно настроить словарь log_colors, где для каждого уровня можно задать свой цвет. В примере использованы стандартные цвета, такие как cyan, green, yellow, red и bold_red.
print("\033[31mОшибка: файл не найден\033[0m")
print("\033[33mПредупреждение: возможные проблемы с подключением\033[0m")
В более сложных проектах лучше использовать библиотеки для работы с цветом, такие как colorama или termcolor. Эти библиотеки обеспечивают кроссплатформенную совместимость и упрощают работу с цветами.
Пример с использованием colorama:
from colorama import Fore, init init(autoreset=True) print(Fore.RED + "Ошибка: не удалось подключиться к базе данных") print(Fore.YELLOW + "Предупреждение: низкий уровень памяти")
Для более гибкого подхода можно комбинировать цвета с форматированием, например, использовать жирный или подчеркивающий текст для выделения важнейших сообщений. Важно, чтобы цвета не были слишком яркими или агрессивными, что может отвлекать внимание.
Создание собственной функции для окрашивания текста с параметрами

Ниже приведен пример функции, которая позволяет задавать цвет текста с помощью параметров:
def color_text(text, color='green'):
colors = {
'black': '\033[30m',
'red': '\033[31m',
'green': '\033[32m',
'yellow': '\033[33m',
'blue': '\033[34m',
'magenta': '\033[35m',
'cyan': '\033[36m',
'white': '\033[37m'
}
reset = '\033[39m' # сброс цвета
if color not in colors:
raise ValueError(f"Неверный цвет: {color}. Доступные цвета: {', '.join(colors.keys())}")
return f"{colors[color]}{text}{reset}"
Функция color_text принимает два параметра: текст и цвет. Если цвет не указан, по умолчанию используется зеленый. В словаре colors содержатся ANSI escape-коды для разных цветов. Эти коды используются для изменения цвета текста в терминале. В конце каждого возвращаемого текста добавляется код reset, который сбрасывает цвет обратно к стандартному.
Пример использования:
print(color_text("Это красный текст!", "red"))
print(color_text("Это синий текст!"))
