Python для включения цветов ANSI для stdout в Windows?

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

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

Ответ 1

Есть два модуля 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-кодов, когда вывод si не является tty, вы не хотите видеть escape файлы ANSI в файлах журналов.

Ответ 2

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

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