Ответ 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 в файлах журналов.