Есть два модуля 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 в файлах журналов.