Модуль 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 для удобоносимости.