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

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

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

3 ответов


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

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

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

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

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

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


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

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


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