Модуль Python для включения цветов ANSI для стандартного вывода в Windows? - PullRequest
13 голосов
/ 02 декабря 2011

Я ищу модуль Python, который бы добавил поддержку ANSI под Windows.

Это означает, что после импорта модуля, если вы выведете экранированные строки ANSI, они будут отображаться соответствующим образом.

Ответы [ 3 ]

12 голосов
/ 02 декабря 2011

Лучше всего использовать модуль colorama .

На самом деле я считаю, что консоль Windows изначально не поддерживает цвета ANSI.Colorama решает эту проблему, перехватывая последовательности ANSI и выполняя соответствующие вызовы изменения цвета Windows.Таким образом, ваш код может быть достаточно переносимым, поскольку он может печатать цвета одинаково как в Windows, так и в ANSI-совместимых терминалах.

5 голосов
/ 02 декабря 2011

Есть два модуля Python, которые могут сделать этот модуль colorama и tendo.ansiterm, который изначально был написан для waf.

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

import sys
try:
   import colorama
   colorama.init()
except:
   try:
       import tendo.ansiterm
   except:
       pass

sys.stdout.write"\033[33mYellow Submarine"
sys.stderr.write"\033[31mred, red , wine!"

Теперь обе будут работать нормально, но если вы попытаетесьперенаправить только один из stderr или stdout, ansiterm будет выводить коды ANSI на экран и перенаправлять вывод.

Я не уверен, но я подозреваю, что правильное поведение заключается в отбрасывании кодов ANSI, когда вывод не является tty, вы не хотите видеть выходы ANSI в файлах журналов.

0 голосов
/ 14 июня 2018

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

...