2015-08-09 4 views
0

Я использую ANSI escape codes, чтобы добавить цвет и другие эффекты (например, полужирный) к выходу моей программы python.Определите, может ли мой терминал использовать escape-код ANSI в python

Используя что-то вроде:

print "\033[1mThis should be in bold" 

напечатает «Это должно быть жирным шрифтом» в моем терминале.

Однако:

print "\033[3mThis should be in italics" 

Не печатает текст в терминале, я предполагаю, что мой терминал не поддерживает его.

Есть ли способ определить, какие коды поддерживаются терминалом? В приведенной выше ссылке указано, что курсив «не поддерживается широко, иногда рассматривается как обратный».

Есть ли способ (в Python), чтобы:

  1. тест, если машина поддерживает код ANSI.
  2. Test, если машина поддерживает код, но использует альтернативный выход (т.е. я мог бы попытаться использовать курсив, но терминал фактически печатает в обратном)
+0

http://unix.stackexchange.com/questions/159718/programmatically-detect-the-ansi-escape-code-supported-by-terminal –

ответ

0

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

Он выглядит так: модуль Python curses обеспечивает интерфейс к этим библиотекам.

Существует пример here, который выглядит так, как будто он делает то, что вы хотите.