Python

Как менять цвет текста в Python: ANSI-коды и colorama

Цвет текста в Python меняют через специальные управляющие последовательности, которые понимает терминал. Сам Python просто выводит строку, а терминал решает, показать ее красной, зеленой, желтой или обычной

Самый простой способ — использовать ANSI-коды. Для более удобной работы на Windows часто подключают библиотеку colorama, которая помогает терминалу корректно обрабатывать цветные последовательности

Самый короткий пример

print("\033[31mКрасный текст\033[0m")
print("\033[32mЗеленый текст\033[0m")
print("Обычный текст")

Здесь \033[31m включает красный цвет, \033[32m включает зеленый цвет, а \033[0m сбрасывает оформление обратно к обычному

Если забыть сброс цвета, следующий вывод тоже может остаться цветным. Поэтому \033[0m лучше добавлять в конце каждой цветной строки

Основные цвета ANSI

Цвет Код
Черный \033[30m
Красный \033[31m
Зеленый \033[32m
Желтый \033[33m
Синий \033[34m
Фиолетовый \033[35m
Голубой \033[36m
Белый \033[37m
Сброс \033[0m

Пример с несколькими цветами

print("\033[33mПредупреждение\033[0m")
print("\033[32mОперация выполнена успешно\033[0m")
print("\033[31mОшибка: файл не найден\033[0m")

Такой вывод удобно использовать в учебных консольных программах: зеленым отмечать успех, желтым предупреждение, красным ошибку

Как сделать код удобнее через константы

Писать ANSI-коды прямо в строках неудобно. Лучше вынести цвета в переменные

RED = "\033[31m"
GREEN = "\033[32m"
YELLOW = "\033[33m"
RESET = "\033[0m"

print(GREEN + "Готово" + RESET)
print(YELLOW + "Проверьте настройки" + RESET)
print(RED + "Ошибка" + RESET)

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

Функция для цветного вывода

Еще удобнее сделать маленькую функцию

COLORS = {
    "red": "\033[31m",
    "green": "\033[32m",
    "yellow": "\033[33m",
    "blue": "\033[34m",
    "reset": "\033[0m"
}

def color_text(text, color):
    start = COLORS.get(color, "")
    reset = COLORS["reset"]
    return f"{start}{text}{reset}"

print(color_text("Успех", "green"))
print(color_text("Предупреждение", "yellow"))
print(color_text("Ошибка", "red"))

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

Как менять цвет фона

ANSI-коды работают не только с цветом текста, но и с фоном

print("\033[41mБелый текст на красном фоне\033[0m")
print("\033[42mТекст на зеленом фоне\033[0m")
print("\033[44mТекст на синем фоне\033[0m")

Фоновые коды обычно начинаются с 4: 41 для красного, 42 для зеленого, 44 для синего

Для учебных программ фон лучше использовать умеренно. Цветной текст обычно читается легче, чем большие цветные блоки

Colorama: удобный вариант для Windows и простых проектов

Библиотека colorama делает цветной вывод более удобным и помогает с поддержкой терминалов Windows

Установка

pip install colorama

Пример

from colorama import Fore, Style, init

init(autoreset=True)

print(Fore.GREEN + "Готово")
print(Fore.YELLOW + "Предупреждение")
print(Fore.RED + "Ошибка")
print("Обычный текст")

init(autoreset=True) автоматически сбрасывает цвет после каждого вывода. Это удобно для новичков, потому что не нужно каждый раз добавлять Style.RESET_ALL

Если автоматический сброс не использовать, можно писать так

from colorama import Fore, Style

print(Fore.RED + "Ошибка" + Style.RESET_ALL)

Цветной вывод для статусов программы

В реальных учебных скриптах цвета лучше привязывать к смыслу, а не к украшению

from colorama import Fore, Style, init

init(autoreset=True)

def print_success(message):
    print(Fore.GREEN + message)

def print_warning(message):
    print(Fore.YELLOW + message)

def print_error(message):
    print(Fore.RED + message)

print_success("Файл сохранен")
print_warning("Файл уже существует")
print_error("Не удалось открыть файл")

Такой подход делает код понятнее. Вы вызываете print_error(), а не думаете каждый раз, какой именно цвет использовать

Почему цвет может не отображаться

Если вы написали ANSI-коды, а видите странные символы вроде [31m, проблема обычно не в Python, а в среде запуска. Не каждый вывод поддерживает ANSI-последовательности одинаково

Частые причины

  • код запускается не в обычном терминале
  • IDE показывает вывод в консоли, которая не поддерживает цвета
  • Windows-терминал требует colorama
  • вывод перенаправлен в файл
  • забыта установка или инициализация colorama

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

Мини-практика

Сделайте маленькую программу, которая проверяет оценку и выводит цветной статус

from colorama import Fore, init

init(autoreset=True)

score = 82

if score >= 80:
    print(Fore.GREEN + "Отличный результат")
elif score >= 50:
    print(Fore.YELLOW + "Нужно повторить тему")
else:
    print(Fore.RED + "Тему лучше пройти заново")

После запуска измените score на 45, 65, 95 и проверьте, как меняется цвет вывода

Частые ошибки

Забыть сброс цвета

Если не добавить \033[0m или Style.RESET_ALL, последующий текст может остаться цветным

Ожидать цвет в любом месте вывода

ANSI-коды рассчитаны на терминал. В некоторых IDE, лог-файлах и веб-интерфейсах они могут не работать или отображаться как обычные символы

Использовать слишком много цветов

Если каждая строка разного цвета, читать программу сложнее. Лучше использовать цвета для смысла: успех, предупреждение, ошибка

Путать цвет текста и фон

Коды 31, 32, 33 меняют текст. Коды 41, 42, 43 меняют фон

Что почитать дальше по Python

Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x