Как отобразить цвета ANSI в выводе скрипта Python, работающем под Unix - PullRequest
1 голос
/ 05 марта 2011

У меня есть простой скрипт Python, который использует escape-последовательности ANSI для цветного вывода на терминале.

И это прекрасно работает, но когда вывод используется в другом месте (например, в VIM), все ANSIпоследовательности появляются, и это делает его действительно нечитаемым.

Например, для отображения RED я делаю что-то вроде:

^[[91m Errors:
-------^[[0m

, который отлично читается в терминале.

Я мог бы добавить флаг к моему инструменту командной строки Python, чтобы избежать отображения этих символов, когда мне нужно иметь дело с выводом, но мне было интересно, есть ли способ получить цветной вывод без искажения вывода.

Решение должно было бы использовать Python Stdlib или избегать установки сторонней библиотеки.

Тем не менее, я в порядке, если подход не работает в Windows:)

Ответы [ 2 ]

3 голосов
/ 05 марта 2011

Вы можете использовать os.isatty с дескриптором файла stdout, который можно получить, вызвав fileno на sys.stdout.

Редактировать: Похоже, файлы такжеиметь метод isatty;следовательно, вы можете избежать использования модуля os и просто использовать sys.stdout.isatty().

1 голос
/ 05 марта 2011

Посмотрите на этот ответ, он охватывает именно то, что вы запрашиваете

Как определить, подключен ли sys.stdout к терминалу или нет?

...