确定我的终端是否可以在python中使用ANSI转义码

时间:2015-08-09 12:18:55

标签: python ansi-escape

我使用ANSI escape codes为我的python程序的输出添加颜色和其他效果(如粗体)。

使用类似的东西:

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

将打印"这应该是粗体"在我的终端。

然而:

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

不在终端中打印文本,我认为我的终端不支持它。

有没有办法确定终端支持哪些代码?上面的链接指出斜体是"没有得到广泛支持。有时被视为反向。"

有没有办法(在python中):

  1. 测试一台机器是否支持ANSI代码。
  2. 测试一台机器是否支持代码但是使用替代输出(即我可能尝试使用斜体,但终端实际上​​反向打印)

1 个答案:

答案 0 :(得分:0)

terminfo库的设计几乎就是为了这个目的。在所有东西都是基于终端的那一天,需要一种可移植的方式来做一些事情,比如显示粗体文本或清除屏幕。 terminfo的工作原理是将TERM环境变量的值与终端功能数据库进行比较。

看起来Python的curses模块提供了这些库的接口。

有一个示例here看起来像你想做的那样。