- Цветной вывод текста в Python
- C помощью встроенных средств языка
- Цвета
- Эффекты
- Функции для вызова
- Как вывести цветной текст в консоль на Windows
- Вывод цветного текста в консоль с colorama
- Цветной текст с помощью termcolor
- Заключение
- Цветной вывод текста в Python: Colorama
- Установка
- Описание
- Использование
- Инициализация
- Цветной вывод текста в Python
- C помощью встроенных средств языка
- Цветной вывод текста в Python через библиотеку Colorama
- Цветной текст через библиотеку termcolor
- Вывод
Цветной вывод текста в Python
Python обладает достаточным количеством инструментов, чтобы выводить текст в консоль в любом цвете. Такой вывод не требует особых навыков, реализуется в несколько строк кода и используется как для выделения важной информации, так и для придания красоты тексту.
Сделать текст цветным можно двумя способами: использовать встроенные средства языка или библиотеки. Каждый способ имеет плюсы и минусы, также существуют нюансы, касающиеся изменения цвета текста в консоли Windows.
C помощью встроенных средств языка
В Python можно форматировать текст с помощью ANSI кодов. Это очень мощный и удобный инструмент, с его помощью программист может напрямую определять цвет текста.
ANSI коды работают на большинстве дистрибутивов Linux, но не поддерживаются консолью операционной системы Windows до Windows 10. В статье есть отдельный пункт про то, как запускать на Windows!
На разных дистрибутивах Linux и в Windows 10 цвет текста, созданный при помощи одного и того же ANSI кода, может отличаться. Это зависит от настроек консоли, её кастомизации пользователем и некоторых других факторов.
Изменять цвет текста с помощью ANSI кодов можно разными способами, например, использоваться функции или даже написать свой класс-обёртку для ANSI.
Использовать ANSI коды просто, для этого нужно знать базовый синтаксис и сами коды. Разбор на примере кода «\033[31m\033[43m»:
- \033 — обозначение того, что дальше идет какой-то управляющий цветом код;
- [31m — цвет текста (красный);
- [43m — цвет фона (жёлтый).
После вывода этого в консоль, далее выводимая информация будет красного цвета на жёлтом фоне. Сбросить к начальным значениям : \033[0m .
Базовые коды:
- \033[0-7m — это различные эффекты, такие как подчеркивание, мигание, жирность и так далее;
- \033[30-37m — коды, определяющие цвет текста (черный, красный, зелёный, жёлтый, синий, фиолетовый, сине-голубой, серый);
- \033[40-47m — коды, определяющие цвет фона.
Цвета
Цвет | Текст | Фон |
Чёрный | 30 | 40 |
Красный | 31 | 41 |
Зелёный | 32 | 42 |
Жёлтый | 33 | 43 |
Синий | 34 | 44 |
Фиолетовый | 35 | 45 |
Бирюзовый | 36 | 46 |
Белый | 37 | 47 |
Эффекты
Код | Значение |
0 | Сброс к начальным значениям |
1 | Жирный |
2 | Блёклый |
3 | Курсив |
4 | Подчёркнутый |
5 | Редкое мигание |
6 | Частое мигание |
7 | Смена цвета фона с цветом текста |
Функции для вызова
Быстро покрасить строку в нужный цвет можно с помощью функций. Им нужно дать говорящие имена, передать в качестве аргумента строку и использовать в их теле правильный ANSI код.
Подход удобен тем, что можно объявить N функций, которые форматируют любой текст в нужный цвет и использовать их во всех своих программах, достаточно лишь импортировать модуль.
def out_red(text): print("\033[31m <>" .format(text)) def out_yellow(text): print("\033[33m <>" .format(text)) def out_blue(text): print("\033[34m <>" .format(text)) out_red("Вывод красным цветом") out_yellow("Текст жёлтого цвета") out_blue("Синий текст")
Мы меняли только цвет текста, но можно менять и цвет фона, добавлять дополнительные стили. Например, чтобы вывести подчёркнутый текст белого цвета на синем фоне, нужно написать так:
print("\033[4m\033[37m\033[44m<>\033[0m".format("Python 3"))
Вот так будет выглядеть вывод:
Обратите внимание на строку print(«\033[4m\033[37m\033[44m<>\033[0m».format(«Python 3»)) .
Здесь мы вывод осуществляли следующим образом:
- \033[4m — подчёркнутый;
- \033[37m — белая надпись;
- \033[44m — синий фон;
- <> — заменится на «Python 3»;
- \033[0m — сброс к начальным значениям.
Как вывести цветной текст в консоль на Windows
В Linux по умолчанию встроена поддержка ANSI кодов консолью, а в Windows — нет. Это объясняется тем, что для линукса консоль является основным рабочим инструментом. В Windows консоль используется редко, поэтому нет смысла встраивать в неё подобные вещи.
Однако в Windows 10, начиная с версии Threshold 2, разработчики добавили в консоль поддержку управляющих кодов. Однако из-за того, что далеко не все пользуются новой ОС, писать консольные приложения с цветным текстом все ещё приходится с помощью дополнительных библиотек.
Для того, чтобы код, написанный с помощью внутренних средств Python 3 или с помощью библиотеки termcolor заработал в Windows 10, надо включить поддержку ANSI для stdout в запущенной консоле.
Сделать это можно следующим образом:
import ctypes kernel32 = ctypes.windll.kernel32 kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
Вывод цветного текста в консоль с colorama
Colorama — самая популярная библиотека для вывода цветного текста на Python 3. Colorama позволяет использовать ANSI коды не только в Linux, но и в Windows.
Использование функций и методов библиотеки упрощает написание кода и делает более простым для поддержки. Больше не нужно запоминать или копировать ANSI коды. Команды настолько просты и интуитивно понятны, что с задачей справиться даже обычный пользователь.
Использование сторонней библиотеки, такой как colorama, не приводит к каким-то негативным эффектам. Перед использованием библиотеки colorama, её следует установить с помощью команды в консоле pip install colorama .
Приведём пример использования colorama:
import colorama from colorama import Fore, Back, Style colorama.init() print(Fore.RED + 'Красный текст') print(Back.BLUE + 'Синий фон') print(Style.RESET_ALL) print('Снова обычный текст')
Здесь мы импортировали модули для работы с текстом и фоном. И так же как и раньше мы выводили всё встроенными средствами Python, вывели всё в консоль.
Стоит обратить внимание на функцию init. Если её забыть запустить, то не будет поддерживаться вывод на Windows 10.
Только теперь нам не надо писать \033[44m, а достаточно написать Fore.BLUE, что конечно же удобно. Style.RESET_ALL — это сброс цветов консоли к начальным значениям.
Цветной текст с помощью termcolor
Эта библиотека даёт программисту исчерпывающий инструментарий для работы с цветом текста.
Часто termcolor используют вместе с colorama. Termcolor используют непосредственно для написания кода, действительно, её синтаксис более удобный и простой.
Для установки библиотеки termcolor следует выполнить в консоле команду pip install termcolor .
from termcolor import colored, cprint print(colored('Привет мир!', 'red', attrs=['underline'])) print('Привет, я люблю тебя!') cprint('Вывод с помощью cprint', 'green', 'on_blue')
Здесь мы воспользовались функциями colored и cprint. Первая позволяет создать строку для последующего вывода с необходимыми параметрами цветов и эффектов. Вторая сразу производит вывод в консоль.
Заключение
Если мы делаем пару функций для вывода в консоль цветных сообщений об ошибках и предупреждениях, то можно их сделать и не подключая библиотек. Правда при подключении библиотеки код более читаемым становится.
При выборе между библиотеками colorama и termcolor, я бы остановился бы на colorama. Не только исходя из её большей популярности, но и из-за того, что она поддерживает работу с командной строкой Windows 10. Хотя cprint удобная функция в termcolor.
Цветной вывод текста в Python: Colorama
Библиотека Colorama позволяет управляющим символам ANSI (используются для создания цветного текста в терминале и позиционирования курсора) работать под MS Windows.
Если вы считаете Colorama полезной, не забудьте поблагодарить ее авторов и сделать пожертвование. Спасибо!
Установка
pip install colorama # или conda install -c anaconda coloramaОписание
Управляющие символы ANSI давно используются для создания цветного текста и позиционирования курсора в терминале на Unix и Mac. Colorama делает возможным их использование на платформе Windows, оборачивая stdout, удаляя найденные ANSI-последовательности (которые будут выглядеть как тарабарщина при выводе) и преобразуя их в соответствующие вызовы win32 для изменения состояния командной строки. На других платформах Colorama ничего не меняет.
В результате мы получаем простой кроссплатформенный API для отображения цветного терминального текста из Python, а также следующий приятный побочный эффект: существующие приложения или библиотеки, использующие ANSI-последовательности для создания цветного вывода на Linux или Mac, теперь могут работать и на Windows, просто вызвав colorama.init().
Альтернативный подход заключается в установке ansi.sys на машины с Windows, что обеспечивает одинаковое поведение для всех приложений, работающих с командной строкой. Colorama предназначена для ситуаций, когда это не так просто (например, может быть, у вашего приложения нет программы установки).
Демо-скрипты в репозитории исходного кода библиотеки выводят небольшой цветной текст, используя последовательности ANSI. Сравните их работу в Gnome-terminal и в Windows Command-Prompt, где отображение осуществляется с помощью Colorama:
Эти скриншоты показывают, что в Windows Colorama не поддерживает ANSI ‘dim text’ (тусклый текст); он выглядит так же, как и ‘normal text’.
Использование
Инициализация
Приложения должны инициализировать Colorama с помощью:
Цветной вывод текста в Python
Всем привет сегодня я хотел рассказать вам "Как сделать цветной вывод текста в Python?" это даже может сделать не опытный человек не имея каких-то знаний. Поэтому если вам интересно то продолжайте читать и тогда все поймете.
C помощью встроенных средств языка
На Python с помощью ANSI-код можно делать цвет, фон и т.д. Это очень мощный и удобный инструмент, с его помощью программист может напрямую определять цвет текста. ANSI коды работают на большинстве дистрибутивов Linux, но не поддерживаются консолью операционной системы Windows до Windows 10.
Изменять цвет текста с помощью ANSI кодов можно разными способами, например, использоваться функции или даже написать свой класс-обёртку для ANSI.
Использовать ANSI коды просто, для этого нужно знать базовый синтаксис и сами коды. Разбор на примере кода «\033[31m\033[43m»:
- "033[" - обозначение того, что дальше идет какой-то управляющий цветом код.
- 37m - это код цвета а именно красный.
- 43m - это код цвет фона для текста.
Именно через этот ANSI-код мы можем делать текст разноцветным, не забывайте ставить "" иначе будет ошибка.
Давайте сделаем вывод текста на консоле через функции.
def out_red(text): print("\033[34m<>".format(text)) out_red("ПРИВЕТ")
Через print() мы задали цвет текста "ПРИВЕТ" синим цветом. Также можно добавить фон и стиль текста все в одну строку.
print("\033[3m\033[33m\033[41m<>\033[0m".format("Htua_0111100000"))
- \033[3m - отвечает за стилб текста в данном случае это курсив.
- \033[33m - отвечает за цвет текста.
- \033[41m - отвечает за цвет фона.
- <> - заменит на "Htua_0111100000"
- \033[0m - отвечает за сброс к начальным значениям.
Вобщем вот целая таблица с кодами цвета, фона и стилей.
Сброс к начальным значениям
Смена цвета фона с цветом текста
Цветной вывод текста в Python через библиотеку Colorama
Этой библиотекой тоже можно сделать цветной текст. Достаточно просто знать код и все. Для того чтобы начать работать нужно просто установить библиотеку pip install colorama потом можно начать работать с этой библиотекой. Создайте файл colorama.py и можно приступать к написанию кода.
from colorama import init, Fore from colorama import Back from colorama import Style init(autoreset=True) print(Fore.BLUE + 'some red text') print(Back.WHITE + 'and with a green background') print(Style.BRIGHT + 'and in dim text') print(Style.RESET_ALL) print('back to normal now')
- Cначала импортируем init, Back, Style то есть все необходимые нам функции для вывода текста на консоль.
- Стоит обратить внимание на функцию init . Если её забыть запустить, то не будет поддерживаться вывод на Windows 10.
- print(Fore.BLUE + 'some red text') - это задает цвет текста также вы можете поменять на красный (RED) или зеленный (GREEN) и т.д.
- print(Back.WHITE + 'and with a green background') - это задает фон текста
- print(Style.BRIGHT + 'and in dim text') - стиль текста
- print(Style.RESET_ALL) - сброс всех стилей
- print('back to normal now') - обычный текст
Цветной текст через библиотеку termcolor
Это тоже вторая библиотека отвечающее за цвет фон и так далее. pip install termcolor
from termcolor import colored, cprint print(colored('Привет мир!', 'red', attrs=['underline'])) print('Привет, я люблю тебя!') cprint('Вывод с помощью cprint', 'green', 'on_blue')
Импортируем colored и cprint, и пишем print(colored('Привет мир!', 'red', attrs=['underline'])) тут вобще намного легче чем предыдущая attrs = ['underline'] задает стиль текста. Следущее сpint('Вывод с помощью cprint', 'green', 'on_blue') - это функция отвечает за цвет текста и фон. сpint('Ваш любимый текст', 'цвет текста', 'фон текста')
Вывод
В общем, благодаря ANSI-кодом, библиотека colorama и termcolor можно создавать ваши любимые тексты, кстати можно с этой темой можно создавать мини викторины или что то другое. Я надеюсь на то что вам понравилось эта статья и надеюсь в будущем я продолжу писать все больше и больше статей на разные темы. Спасибо за внимание!