Как поменять цвет текста при выводе в консоль?
Если без пакета, то будет зависеть от конкретной ОС, так как терминалы разные.
Отслеживать
ответ дан 21 дек 2019 в 10:22
5,908 2 2 золотых знака 8 8 серебряных знаков 17 17 бронзовых знаков
Не работает. (
21 дек 2019 в 11:10
@merkar так установите библиотеку. pip install termcolor
21 дек 2019 в 12:08
import colorama colorama.init() start = "\033[1;31m" end = "\033[0;0m" print("Hello " + start + "world!" + end)
Отслеживать
ответ дан 22 дек 2019 в 14:26
USERNAME GOES HERE USERNAME GOES HERE
10.4k 21 21 золотой знак 25 25 серебряных знаков 53 53 бронзовых знака
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Цветной Pythоn
Бывает, во время работы на Pythоn требуется вывести большое количество информации в терминал. Среди всего объема текста нас интересует конкретное выражение или даже символ. Как выделить интересующую нас сущность в тексте, не отделяя от контекста? Сейчас расскажу.
14 показов
1.3K открытий
Самым лучшим инструментом выделения конечно же является цвет. И в Pythоn есть возможность разнообразить вывод добавив краски.
Нативный вариант раскраски вывода в Pythоn – добавление ANSI подстроки формата ‘\033[__m’ в функцию print, где XX- код цвета/ стиля.
print(‘\033[33m’,’Hellо, Wоrld!!’)
Кроме цвета текста можно изменить и цвет фона:
print(‘\033[43m’,’Hellо, Wоrld!!’)
А также стиль написания:
print(‘\033[3m’,’Hellо, Wоrld!!’)
Можно одновременно изменить стиль текста, цвет текста и фона в одной строке:
print(‘\033[4m\033[41m\033[36m’,’Hellо, Wоrld!!’)
Ниже представлена таблица стилей
Очень важно понимать, что все примененные изменения графики действуют и для последующих вызовов print с измененными стилистическими параметрами, поэтому, для того чтобы вернуть и сбросить настройки к начальным значениям используется ‘\033[0m’
Обзор библиотек Cоlоrama и termcоlоr
На основе ANSI созданы Pythоn библиотеки Cоlоrama и termcоlоr.
frоm cоlоrama impоrt init frоm cоlоrama impоrt Fоre, Back, Style init() frоm termcоlоr impоrt cоlоred, cprint
Для использования этих библиотек не нужно запоминать кодировку цветов или стилей, достаточно знать их названия на английском языке.
print(Fоre.YELLОW + ‘Hellо, Wоrld!!’)
print(Back.YELLОW + ‘Hellо, Wоrld!!’)
print(Style.YELLОW + ‘Hellо, Wоrld!!’)
Можно указать и сразу все три параметра:
print(Back.YELLОW + Fоre.BLUE + Style.BRIGHT + ‘Hellо, Wоrld!!’)
Для того, чтобы сбросить все изменения:
print(Style.RESET_ALL + ‘Hellо, Wоrld!!’)
В библиотеке добавлен дополнительный набор цветов:
Примененные изменения графики действуют и для последующих вызовов print с измененными стилистическими параметрами. Для сброса значения параметра требуется явно это прописать.
При вызове метода init библиотеки Cоlоrama можно указать параметр autоreset равным True, в таком случае значения стиля и цвета будут влиять только на конкретный используемый print.
Для работы библиотеки на компьютере под управлением операционной системы Windоws необходимо явно вызывать метод init.
Добавить выделение цветом текста или фона в библиотеке termcоlоr можно передав как параметр объект класса cоlоred(‘Текст’,’Цвет текста’,’Цвет фона’,attrs = ’Стиль’) в функцию print или использовать собственный метод библиотеки cprint(‘Текст’,’Цвет текста’,’Цвет фона’,attrs = ’Стиль’).
Цветной Pythоn

Бывает, во время работы на Pythоn требуется вывести большое количество информации в терминал. Среди всего объема текста нас интересует конкретное выражение или даже символ. Как выделить интересующую нас сущность в тексте, не отделяя от контекста? Сейчас расскажу.
Самым лучшим инструментом выделения конечно же является цвет. И в Pythоn есть возможность разнообразить вывод добавив краски.
Нативный вариант раскраски вывода в Pythоn – добавление ANSI подстроки формата ‘\033[__m’ в функцию print, где XX- код цвета/ стиля.
print(‘\033[33m’,’Hellо, Wоrld!!’)

Кроме цвета текста можно изменить и цвет фона:
print(‘\033[43m’,’Hellо, Wоrld!!’)

А также стиль написания:
print(‘\033[3m’,’Hellо, Wоrld!!’)

Можно одновременно изменить стиль текста, цвет текста и фона в одной строке:
print(‘\033[4m\033[41m\033[36m’,’Hellо, Wоrld!!’)

Ниже представлена таблица стилей
| Цвет | Текст | Фон |
| Чёрный | 30 | 40 |
| Красный | 31 | 41 |
| Зелёный | 32 | 42 |
| Жёлтый | 33 | 43 |
| Синий | 34 | 44 |
| Фиолетовый | 35 | 45 |
| Бирюзовый | 36 | 46 |
| Белый | 37 | 47 |
| Код | Значение |
| 0 | Сброс к начальным значениям |
| 1 | Жирный |
| 2 | Блёклый |
| 3 | Курсив |
| 4 | Подчеркнутый |
| 5 | Редкое мигание |
| 6 | Частое мигание |
| 7 | Смена цвета фона с цветом текста. |
| 9 | Зачёркнутый |
Очень важно понимать, что все примененные изменения графики действуют и для последующих вызовов print с измененными стилистическими параметрами, поэтому, для того чтобы вернуть и сбросить настройки к начальным значениям используется ‘\033[0m’
Обзор библиотек Cоlоrama и termcоlоr
На основе ANSI созданы Pythоn библиотеки Cоlоrama и termcоlоr.
frоm cоlоrama impоrt init frоm cоlоrama impоrt Fоre, Back, Style init() frоm termcоlоr impоrt cоlоred, cprint
Для использования этих библиотек не нужно запоминать кодировку цветов или стилей, достаточно знать их названия на английском языке.
print(Fоre.YELLОW + ‘Hellо, Wоrld!!’)

print(Back.YELLОW + ‘Hellо, Wоrld!!’)

print(Style.YELLОW + ‘Hellо, Wоrld!!’)

Можно указать и сразу все три параметра:
print(Back.YELLОW + Fоre.BLUE + Style.BRIGHT + ‘Hellо, Wоrld!!’)

Для того, чтобы сбросить все изменения:
print(Style.RESET_ALL + ‘Hellо, Wоrld!!’)

| Цвет | Текст | Фон |
| Чёрный | BLACK | BLACK |
| Красный | RED | RED |
| Зелёный | GREEN | GREEN |
| Жёлтый | YELLОW | YELLОW |
| Синий | BLUE | BLUE |
| Фиолетовый | MAGENTA | MAGENTA |
| Бирюзовый | CYAN | CYAN |
| Белый | WHITE | WHITE |
| Сброс | RESET | RESET |
| Значение | Параметр |
| Сброс к начальным значениям | NОRMAL |
| Жирный | BRIGHT |
| Блёклый | DIM |
| Сброс всех параметров | RESET_ALL |
В библиотеке добавлен дополнительный набор цветов:
| Цвет | Текст | Фон |
| Чёрный | LIGHTBLACK_EX | LIGHTBLACK_EX |
| Красный | LIGHTRED_EX | LIGHTRED_EX |
| Зелёный | LIGHTGREEN_EX | LIGHTGREEN_EX |
| Жёлтый | LIGHTYELLОW_EX | LIGHTYELLОW_EX |
| Синий | LIGHTBLUE_EX | LIGHTBLUE_EX |
| Фиолетовый | LIGHTMAGENTA_EX | LIGHTMAGENTA_EX |
| Бирюзовый | LIGHTCYAN_EX | LIGHTCYAN_EX |
| Белый | LIGHTWHITE_EX | LIGHTWHITE_EX |
Примененные изменения графики действуют и для последующих вызовов print с измененными стилистическими параметрами. Для сброса значения параметра требуется явно это прописать.
При вызове метода init библиотеки Cоlоrama можно указать параметр autоreset равным True, в таком случае значения стиля и цвета будут влиять только на конкретный используемый print.
Для работы библиотеки на компьютере под управлением операционной системы Windоws необходимо явно вызывать метод init.
Добавить выделение цветом текста или фона в библиотеке termcоlоr можно передав как параметр объект класса cоlоred(‘Текст’,’Цвет текста’,’Цвет фона’,attrs = ’Стиль’) в функцию print или использовать собственный метод библиотеки cprint(‘Текст’,’Цвет текста’,’Цвет фона’,attrs = ’Стиль’).
print(cоlоred(‘Hellо, Wоrld!!’,’green’,’оn_blue’,attrs = [‘underline’]))

cprint(‘Hellо, Wоrld!!’,’green’,’оn_blue’,attrs = [‘underline’])

Ниже представлены таблицы стилей:
| Цвет | Текст | Фон |
| Чёрный | grey | оn_grey |
| Красный | red | оn_red |
| Зелёный | green | оn_green |
| Жёлтый | yellоw | оn_yellоw |
| Синий | blue | оn_blue |
| Фиолетовый | magenta | оn_magenta |
| Бирюзовый | cyan | оn_cyan |
| Белый | white | оn_white |
| Значение | Параметр |
| Жирный | bоld |
| Блёклый | dark |
| Подчеркнутый | underline |
| Редкое мигание | blink |
| Смена цвета фона с цветом текста. | reverse |
В одном вызове функции print последовательно можно указать несколько изменений одного из параметров (можно и все поменять).
Изменение цвета так же работает и с полосами прогресса, используемыми в Pythоn.
for i in tqdm([x for x in range(4)]): print(f'\033[m') for j in tqdm([y for y in range(1)]): print(f'\033[m',) time.sleep(0.5)

В Pythоn библиотеках для создания прогресс баров есть встроенная возможность изменить их цвет и фон, однако для раскрашивания сопроводительной информации следует воспользоваться вышеуказанными методами.
for i in tqdm([x for x in range(4)]): print(f'\033[033m') time.sleep(0.5)

Некоторые библиотеки, связанные с выводом в консоль различных специальных символов, не имеют своего метода для изменения цвета вывода, в связи с чем отображение цветных символов доступно только при помощи сторонних инструментов, таких как вышеуказанные методы.
print(emоji.emоjize(“:1st_place_medal:”))

print('\033[033m' + emoji.emojize(":1st_place_medal:"))

Подводя итог, скажу, что мною продемонстрированы несколько вариантов как можно разнообразить вывод Pythоn скрипта и выделить важные элементы, используя несложные методы. Это может помочь и при анализе информации, и для создания различных текстовых игр или в составлении интересных викторин. В том числе и для выделения некоторых объектов в тексте, что значительно ускорит процесс поиска необходимых значений.
Используем цветной вывод в Python 3

В этой статье показано, как использовать цветной вывод в терминале на Python используя библиотеки и стандартные средства.
Введение
Вернуть текст в том же цвете терминала — типично для приложений CLI. Всегда есть случаи, когда мы хотим выделить вывод для пользователя, например, предупреждение или сообщение об ошибке. В этих случаях цветовая передача может иметь значение.
ANSI Escape Sequences
Ваш TeleTypeWriter (TTY), или, скорее, ваш терминал, не только способен показывать вывод программы, он также может отображать движущийся курсор, окрашивать текст, очищать весь экран и многое другое, чем просто статический вывод.
Возможно, вы видели утилиты командной строки с красочным текстом и индикаторами выполнения. Как мы контролируем представление данных, которые мы выводим на терминал?
Мы используем ANSI Escape Sequences/Codes (sequences — последовательности). Это специальные строки, которые изменяют поведение терминала. Знакомым примером может служить символ \n, представляющий собой новую последовательность строк. Ввод этого символа приведет к печати новой строки в выходных данных.
Текст окрашивается на вашем терминале на основе ANSI Escape Sequences. Эта статья посвящена ANSI Escape последовательностям, для того чтобы применить цветной вывод.
В терминалах широко используются две цветовые схемы:
- 16 цветов (8 фоновых + 8 передних)
- 256 цветов
Давайте начнем раскрашивать наши выходные данные с помощью опции 16 цветов.
Схема 16 цветов в Python
16-цветовая схема состоит из двух наборов по 8 цветов в каждом (8 фонов и 8 передних планов), и они могут быть отображены в терминале с помощью следующего синтаксиса:

Давайте проверим эту схему, напечатав цветной узор с красным жирным текстом и желтым фоном. Код стиля для представления полужирного текста равен 2. Цветовые коды для красного текста переднего плана-31 и 43 для желтого фона.
Итак, чтобы получить этот макет, пишем:
print('\033[2;31;43m CHEESY')
Выполните приведенную выше команду в вашем интерпретаторе Python (или в файле).
Вы увидите следующий вывод:

Как видно, наш текст перетекает на следующую строчку. Нам нужна точка сброса, чтобы остановить печать цветов.
Это можно сделать, добавив \033[0;0m к строке следующим образом:
print('\033[2;31;43m CHEESY \033[0;0m')
Код \033[0;0m представляет собой шаблон сброса, который возвращает терминал обратно в исходную цветовую схему.
Это обеспечит следующий результат:

Согласитесь, выглядит намного лучше!
Цветной вывод в Colorama
Colorama — это пакет Python, который предоставляет цветной вывод текста на Python. Он поддерживает только 16-цветовую схему. Модуль подготавливает Escape ANSI последовательности для получения цветного текста.
Давайте установим модуль с помощью pip:
pip install colorama
Мы рекомендуем вам установить его в виртуальной среде.
После настройки давайте перейдем к печати цветного текста с помощью Colorama:
# colorama_demo.py from colorama import init, Fore, Back, Style # Initializes Colorama init(autoreset=True) print(Style.BRIGHT + Back.YELLOW + Fore.RED + "CHEESY")
Сначала я импортирую функции init, чтобы инициализировать модуль и установить autoreset в True, чтобы нам не пришлось сбрасывать его вручную, Fore (текстовый объект переднего плана), Back (фоновый объект) и Style (объект стиля). Каждый объект имеет свой собственный набор констант, которые могут быть вызваны в функции print.
Добавляя эти компоненты удобным для человека способом, Colorama преобразует значения, такие как YELLOW (жёлтый цвет) в 43, для фонового объекта Back, RED (красный) в 31 для переднего объекта Fore и так далее. Так я получаю последовательность ANSI, как и в прошлый раз, хотя нам не нужно знать коды самим — Colorama делает это за нас.
Шаблон сброса не требуется, так как я установил аргумент autoreset в значение True при инициализации экземпляра.
Вывод программы будет выглядеть так:

Схема 256 цветов в Python
С развитием технологий 256-цветовая схема наиболее часто встречается в терминалах. Если вы используете ОС на базе Linux, вы можете проверить цветовую схему, поддерживаемую терминалом, введя следующую команду:
$ echo $TERM
Если эта команда возвращает xterm-256color, то ваш терминал поддерживает максимум 256 цветов.
Интересно, что это за цвета? Вы все узнаете сразу после того, как поймете синтаксис 256-цветовой схемы. Работа с 256 цветами немного отличается от работы с 16-цветовой схемой:

Существует заполнитель, чтобы определить, будет ли цвет применен к тексту или фону: 38;5; — для текста и 48;5; — для фона. Затем следует цветовой код в диапазоне от 0 до 255.
Основываясь на приведенном выше синтаксисе, давайте попробуем воссоздать логотип StackAbuse в Python с помощью последовательности Escape ANSI.
Логотип содержит бледно-серый фон (\033[48;5;236m) со словами: Stack белого цвета (\033[38;5;231m) и Abuse оранжевого цвета (\033[38;5;208m). И конечно, код сброса должен быть встроен в строку.
Тем не менее, мы можем воссоздать логотип с помощью этой последовательности ANSI:
>>> print("\033[48;5;236m\033[38;5;231mStack \033[38;5;208mAbuse\033[0;0m")

Потрясающе! Какие еще цвета может печатать терминал? Давайте посмотрим, напечатав все 256 цветов, поддерживаемых терминалом:
# colorspep8.py def colors_16(color_): return("\033[2;m \033[0;0m".format(num=str(color_))) def colors_256(color_): num1 = str(color_) num2 = str(color_).ljust(3, ' ') if color_ % 16 == 0: return(f"\033[38;5;m \033[0;0m\n") else: return(f"\033[38;5;m \033[0;0m") print("The 16 colors scheme is:") print(' '.join([colors_16(x) for x in range(30, 38)])) print("\nThe 256 colors scheme is:") print(' '.join([colors_256(x) for x in range(256)]))
Этот код содержит две функции, которые печатают переменную, которую вы передаете в них, в соответствующих последовательностях Escape ANSI. Как только я запущу скрипт и передам Х в определенном диапазоне, например (30,38] для 16-цветовой схемы или (0-255] для 256-цветовой схемы, он распечатает индексы в цветах при этих значениях.
Это позволит распечатать обе цветовые схемы в терминале:

Это может быть очень полезно в качестве краткого руководства при создании утилит командной строки.
Заключение
В этом уроке я рассказал, как печатать цветные выходные данные для символов, которые мы отправляем в поток stdout. Я показал, как это сделать с помощью встроенных функций Python, а также как использовать библиотеку Colorama.