Python цветной текст в консоли windows

Цветной вывод текста в 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 — отвечает за сброс к начальным значениям.

Вобщем вот целая таблица с кодами цвета, фона и стилей.

Цвет

Текст

Фон

Чёрный

30

40

Красный

31

41

Зелёный

32

42

Жёлтый

33

43

Синий

34

44

Фиолетовый

35

45

Бирюзовый

36

46

Белый

37

47

Код

Стили текста

0

Сброс к начальным значениям

1

Жирный

2

Блёклый

3

Курсив

4

Подчёркнутый

5

Редкое мигание

6

Частое мигание

7

Смена цвета фона с цветом текста

Цветной вывод текста в 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')
  1. Cначала импортируем init, Back, Style то есть все необходимые нам функции для вывода текста на консоль.

  2. Стоит обратить внимание на функцию init. Если её забыть запустить, то не будет поддерживаться вывод на Windows 10.

  3. print(Fore.BLUE + 'some red text') — это задает цвет текста также вы можете поменять на красный (RED) или зеленный (GREEN) и т.д.

  4. print(Back.WHITE + 'and with a green background') — это задает фон текста

  5. print(Style.BRIGHT + 'and in dim text') — стиль текста

  6. print(Style.RESET_ALL) — сброс всех стилей

  7. print('back to normal now') — обычный текст

Вывод текста через Colorama

Вывод текста через Colorama

Цветной текст через библиотеку 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 можно создавать ваши любимые тексты, кстати можно с этой темой можно создавать мини викторины или что то другое. Я надеюсь на то что вам понравилось эта статья и надеюсь в будущем я продолжу писать все больше и больше статей на разные темы. Спасибо за внимание!

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, разработчики добавили в консоль поддержку управляющих кодов. Однако из-за того, что далеко не все пользуются новой ОС, писать консольные приложения с цветным текстом все ещё приходится с помощью дополнительных библиотек.

Так библиотека colorama поддерживает работу с Windows 10! Поэтому рекомендуется её использование.

Для того, чтобы код, написанный с помощью внутренних средств 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.

Last Updated :
27 Jun, 2022

In this article, we will cover how to print colored text in Python using several methods to output colored text to the terminal in Python. 

The most common ways to do this are using:

  • Using colorama Module
  • Using termcolor Module
  • Using ANSI Code in Python

Method 1: Print Color Text using colorama Module

Colorama module is a Cross-platform printing of colored text can then be done using Colorama’s constant shorthand for ANSI escape sequences: 

Example 1:  Python program to print red text with green background.

Python3

from colorama import Fore, Back, Style

print(Fore.RED + 'some red text')

print(Back.GREEN + 'and with a green background')

print(Style.DIM + 'and in dim text')

print(Style.RESET_ALL)

print('back to normal now')

Output: 

Example 2: Python program to print green text with red background.

Python3

from colorama import init

from termcolor import colored

init()

print(colored('Hello, World!', 'green', 'on_red'))

Output: 

Method 2: Print Color Text using termcolor Module

termcolor module is a python module for ANSII Color formatting for output in the terminal. 

Example: Python program to print colored text and background.

Python3

import sys

from termcolor import colored, cprint

text = colored('Hello, World!', 'red', attrs=['reverse', 'blink'])

print(text)

cprint('Hello, World!', 'green', 'on_red')

def print_red_on_cyan(x): return cprint(x, 'red', 'on_cyan')

print_red_on_cyan('Hello, World!')

print_red_on_cyan('Hello, Universe!')

for i in range(10):

    cprint(i, 'magenta', end=' ')

cprint("Attention!", 'red', attrs=['bold'], file=sys.stderr)

Output: 

 

Method 3: Print Color Text using ANSI Code in Python

The most common way to print colored text is by printing ANSI escape sequences directly. This can be delivered in different formats such as: 

Example 1: Build Functions to call 

We can build functions to call particular color named functions to execute the relevant ANSI Escape Sequence. The below is Python program to print colored text and background

Python3

def prRed(skk): print("\033[91m {}\033[00m" .format(skk))

def prGreen(skk): print("\033[92m {}\033[00m" .format(skk))

def prYellow(skk): print("\033[93m {}\033[00m" .format(skk))

def prLightPurple(skk): print("\033[94m {}\033[00m" .format(skk))

def prPurple(skk): print("\033[95m {}\033[00m" .format(skk))

def prCyan(skk): print("\033[96m {}\033[00m" .format(skk))

def prLightGray(skk): print("\033[97m {}\033[00m" .format(skk))

def prBlack(skk): print("\033[98m {}\033[00m" .format(skk))

prCyan("Hello World, ")

prYellow("It's")

prGreen("Geeks")

prRed("For")

prGreen("Geeks")

Output: 

 

Example 2: Build a class of colors

Create a class to allot background and foreground colors and call them. The below is Python program to print colored text and background.

Python3

class colors:

reset = '\033[0m'

bold = '\033[01m'

disable = '\033[02m'

underline = '\033[04m'

reverse = '\033[07m'

 strikethrough = '\033[09m'

  invisible = '\033[08m'

   class fg:

        black = '\033[30m'

        red = '\033[31m'

        green = '\033[32m'

        orange = '\033[33m'

        blue = '\033[34m'

        purple = '\033[35m'

        cyan = '\033[36m'

        lightgrey = '\033[37m'

        darkgrey = '\033[90m'

        lightred = '\033[91m'

        lightgreen = '\033[92m'

        yellow = '\033[93m'

        lightblue = '\033[94m'

        pink = '\033[95m'

        lightcyan = '\033[96m'

    class bg:

        black = '\033[40m'

        red = '\033[41m'

        green = '\033[42m'

        orange = '\033[43m'

        blue = '\033[44m'

        purple = '\033[45m'

        cyan = '\033[46m'

        lightgrey = '\033[47m'

print(colors.bg.green, "SKk", colors.fg.red, "Amartya")

print(colors.bg.lightgrey, "SKk", colors.fg.red, "Amartya")

Output: 

Example 3: Iterating functions

We can design iterating & self-generating ANSI Escape sequence, functions. The below is Python program to print colored text and background

Python3

def print_format_table():

    for style in range(8):

        for fg in range(30, 38):

            s1 = ''

            for bg in range(40, 48):

                format = ';'.join([str(style), str(fg), str(bg)])

                s1 += '\x1b[%sm %s \x1b[0m' % (format, format)

            print(s1)

        print('\n')

print_format_table()

Output: 

Библиотека 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:

ANSI-последовательности на Ubuntu под gnome-terminal

ANSI-последовательности на Ubuntu под gnome-terminal
ANSI-последовательности на Windows, используя Colorama

Те же ANSI-последовательности на Windows, используя Colorama

Эти скриншоты показывают, что в Windows Colorama не поддерживает ANSI ‘dim text’ (тусклый текст); он выглядит так же, как и ‘normal text’.

Использование

Инициализация

Приложения должны инициализировать Colorama с помощью:

from colorama import init
init()

В Windows вызов init() отфильтрует управляющие ANSI-последовательности из любого текста, отправленного в stdout или stderr, и заменит их на эквивалентные вызовы Win32.

На других платформах вызов init() не имеет никакого эффекта (если только вы не укажете другие дополнительные возможности; см. раздел «Аргументы Init», ниже). По задумке разработчиков такое поведение позволяет приложениям вызывать init() безоговорочно на всех платформах, после чего вывод ANSI должен просто работать.

Чтобы прекратить использование Colorama до выхода из программы, просто вызовите deinit(). Данный метод вернет stdout и stderr к их исходным значениям, так что Colorama будет отключена. Чтобы возобновить ее работу, используйте reinit(); это выгоднее, чем повторный вызов init() (но делает то же самое).

Цветной вывод

Кроссплатформенное отображение цветного текста может быть упрощено за счет использования константных обозначений для управляющих последовательностей ANSI, предоставляемых библиотекой Colorama:

from colorama import init
init()
from colorama import Fore, Back, Style
print(Fore.GREEN + 'зеленый текст')
print(Back.YELLOW + 'на желтом фоне')
print(Style.BRIGHT + 'стал ярче' + Style.RESET_ALL)
print('обычный текст')

При этом вы также можете использовать ANSI-последовательности напрямую в своем коде:

print('\033[31m' + 'красный текст')
print('\033[39m') # сброс к цвету по умолчанию

Еще одним вариантом является применение Colorama в сочетании с существующими ANSI библиотеками, такими как Termcolor или Blessings. Такой подход настоятельно рекомендуется для чего-то большего, чем тривиальное выделение текста:

from colorama import init
from termcolor import colored

# используйте Colorama, чтобы Termcolor работал и в Windows
init()

# теперь вы можете применять Termcolor для вывода
# вашего цветного текста
print(colored('Termcolor and Colorama!', 'red', 'on_yellow'))

Доступны следующие константы форматирования:

// цвет текста
Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
// цвет фона
Back: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.
// яркость текста и общий сброс
Style: DIM, NORMAL, BRIGHT, RESET_ALL

Style.RESET_ALL сбрасывает настройки цвета текста, фона и яркости. Colorama выполнит этот сброс автоматически при выходе из программы.

Позиционирование курсора

Библиотекой поддерживаются ANSI-коды для изменения положения курсора. Пример их генерации смотрите в demos/demo06.py.

Аргументы Init

init() принимает некоторые **kwargs для переопределения поведения по умолчанию.

init(autoreset=False):
Если вы постоянно осуществляете сброс указанных вами цветовых настроек после каждого вывода, init(autoreset=True) будет выполнять это по умолчанию:

from colorama import init, Fore
init(autoreset=True)
print(Fore.GREEN + 'зеленый текст')
print('автоматический возврат к обычному')

init(strip=None):
Передайте True или False, чтобы определить, должны ли коды ANSI удаляться при выводе. Поведение по умолчанию — удаление, если программа запущена на Windows или если вывод перенаправляется (не на tty).

init(convert=None):
Передайте True или False, чтобы определить, следует ли преобразовывать ANSI-коды в выводе в вызовы win32. По умолчанию Colorama будет их конвертировать, если вы работаете под Windows и вывод осуществляется на tty (терминал).

init(wrap=True):
В Windows Colorama заменяет sys.stdout и sys.stderr прокси-объектами, которые переопределяют метод .write() для выполнения своей работы. Если эта обертка вызывает у вас проблемы, то ее можно отключить, передав init(wrap=False). Поведение по умолчанию — обертывание, если autoreset, strip или convert равны True.

Когда обертка отключена, цветной вывод на платформах, отличных от Windows, будет продолжать работать как обычно. Для кроссплатформенного цветного отображения текста можно использовать AnsiToWin32 прокси, предоставляемый Colorama, напрямую:

import sys
from colorama import init, Fore, AnsiToWin32
init(wrap=False)
stream = AnsiToWin32(sys.stderr).stream

# Python 2
print >>stream, Fore.RED + 'красный текст отправлен в stderr'

# Python 3
print(Fore.RED + 'красный текст отправлен в stderr', file=stream)

Распознаваемые ANSI-последовательности

Последовательности ANSI обычно имеют вид:

ESC [ <параметр> ; <параметр> ... <команда>

Где <параметр> — целое число, а <команда> — один символ. В <команда> передается ноль или более параметров. Если параметры не представлены, это, как правило, синоним передачи одного нуля. В последовательности нет пробелов; они были добавлены здесь исключительно для удобства чтения.

Единственные ANSI-последовательности, которые Colorama преобразует в вызовы win32, это:

ESC [ 0 m     # сбросить все (цвета и яркость)
    ESC [ 1 m     # яркий
    ESC [ 2 m     # тусклый (выглядит так же, как обычная яркость)
    ESC [ 22 м    # нормальная яркость
    
    # FOREGROUND (цвет текста)
    ESC [ 30 м     # черный
    ESC [ 31 м     # красный
    ESC [ 32 м     # зеленый
    ESC [ 33 м     # желтый
    ESC [ 34 m     # синий
    ESC [ 35 m     # пурпурный
    ESC [ 36 m     # голубой
    ESC [ 37 m     # белый
    ESC [ 39 m     # сброс
    
    # ФОН
    ESC [ 40 m     # черный
    ESC [ 41 m     # красный
    ESC [ 42 м     # зеленый
    ESC [ 43 m     # желтый
    ESC [ 44 m     # синий
    ESC [ 45 m     # пурпурный
    ESC [ 46 m     # голубой
    ESC [ 47 m     # белый
    ESC [ 49 m     # сброс
    
    # позиционирование курсора
    ESC [ y;x H    # позиционирование курсора в позиции x, y (у направлена вниз)
    ESC [ y;x f    # позиционирование курсора в точке x, y
    ESC [ n A      # перемещение курсора на n строк вверх
    ESC [ n B      # перемещение курсора на n строк вниз
    ESC [ n C      # перемещение курсора на n символов вперед
    ESC [ n D      # перемещение курсора на n символов назад
    
    # очистить экран
    ESC [ режим J     # очистить экран
    
    # очистить строку
    ESC [ режим K     # очистить строку

Несколько числовых параметров команды ‘m’ могут быть объединены в одну последовательность:

ESC [ 36 ; 45 ; 1 m     # яркий голубой текст на пурпурном фоне

Все другие ANSI-последовательности вида ESC [ <параметр> ; <параметр> … <команда> молча удаляются из вывода в Windows.

Любые другие формы ANSI-последовательностей, такие как односимвольные коды или альтернативные начальные символы, не распознаются и не удаляются. Однако было бы здорово добавить их. Вы можете сообщить разработчикам, если это будет полезно для вас, через Issues на GitHub.

Текущий статус и известные проблемы

Лично я тестировал библиотеку только на Windows XP (CMD, Console2), Ubuntu (gnome-terminal, xterm) и OS X.

Некоторые предположительно правильные ANSI-последовательности не распознаются (см. подробности ниже), но, насколько мне известно, никто еще не жаловался на это. Загадка.

См. нерешенные проблемы и список пожеланий: https://github.com/tartley/colorama/issues

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

Introduction

If you’ve ever worked with some fany command-line tools, you might have seen some colored
text in there — maybe for a warning or error message or somesuch. It certainly can help
in reading comprehension in some situations, so how can we do it in Python?

Specifically, Python 3.8.5 on a Windows 10 machine.

Coloring Terminal Text in Python

The library that is recommended (especially for cross-platform use) is Colorama. This StackOverflow answer suggested its use.

Installing Colorama

Colorama didn’t come pre-installed, but pip saved me:

C:\Users\sfrieder>pip3 install colorama
Collecting colorama
  Downloading https://files.pythonhosted.org/packages/c9/dc/45cdef1b4d119eb96316b3117e6d5708a08029992b2fee2c143c7a0a5cc5/colorama-0.4.3-py2.py3-none-any.whl
Installing collected packages: colorama
Successfully installed colorama-0.4.3

Coloring ‘print’ Statements Example

This Python 3 snippet will color text for you:

import colorama

colorama.init()

print(colorama.Fore.RED + "This is red text")
print("This is still red text")
print(colorama.Style.RESET_ALL) #This prints a newline FYI!
print("Now this is normal text")
print(colorama.Back.GREEN + "Now the background of this text is green")
print(colorama.Fore.RED + "And the text is red on a green background, this clashes so bad!")
print(colorama.Style.DIM + "It's now also... dimmed? What's that?")
print(colorama.Style.RESET_ALL)
print("Thank goodness, back to normal")

And it produces this output:

This is red text
This is still red text

Now this is normal text
Now the background of this text is green
And the text is red on a green background, this clashes so bad!
It's now also... dimmed? What's that?

Thank goodness, back to normal

Eh… trust me. It’s colored. I cannot figure out how to get that to come through here, but it is I swear!

Coloring ‘input’ Statements Example

If you do something like this:

import colorama

colorama.init()
answer=input(colorama.Fore.RED + "This is a dire question, so it is colored red. What is your name?" + colorama.Style.RESET_ALL)

You do NOT get a red colored question prompt. You get gobbledy-gook at the front and end of the line, but no colors.

The question is, how do you fix this?

Someone suggests this fix:

import colorama

colorama.init(convert=True)
answer=input(colorama.Fore.RED + "This is a dire question, so it is colored red. What is your quest?" + colorama.Style.RESET_ALL)

Sadly, this does not work.

This SO answer suggests a truly confounding fix:

import colorama
import sphinx.quickstart

colorama.init()
answer=input(colorama.Fore.RED + "This is a dire question, so it is colored red. What is your favorite color?" + colorama.Style.RESET_ALL)

I had to install sphinx with pip to even get it to run. It installed a LOT of stuff. Once that was done, the result was…

That it still couldn’t find sphinx.quickstart.

Grumble grumble….

Okay, we can try something else:

import colorama
import sphinx.quickstart

colorama.init()
print(colorama.Fore.RED, end='')
answer=input(This is a dire question, so it is colored red. What is the air speed velocity of an unladen swallow?" )
print(colorama.Style.RESET_ALL, end='')

And THAT has the intended effect!

What a silly workaround.

Resources

  • Colorama
  • StackOverflow Answer for print statements
  • StackOverflow Question for ‘input’ not working with colors

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows vps что это
  • Мафия 1 ремейк на windows 7
  • Установить nero 7 на windows 10
  • Создание загрузочного сектора windows 10
  • Windows event id 4648