18

我正在寻找可以在 Windows 下添加 ANSI 支持的 Python 模块。

这意味着在导入模块后,如果您输出 ANSI 转义字符串,它们将相应地出现。

4

3 回答 3

14

您最好的选择可能是使用colorama模块。

事实上,我相信 Windows 控制台本身并不支持 ANSI 颜色。colorama 通过截取 ANSI 序列并执行适当的 Windows 颜色更改调用来解决这个难题。这样,您的代码可以非常便携,因为它可以在 Windows 和 ANSI 兼容的终端上以相同的方式打印颜色。

于 2011-12-02T15:24:50.683 回答
9

有两个 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 代码输出到屏幕并重定向输出。

我不确定,但我怀疑正确的行为是在输出 si 不是 tty 时剥离 ANSI 代码,您不想在日志文件中看到 ANSI 转义。

于 2011-12-02T18:46:40.770 回答
2

您还可以使用使用colorama实现可移植性的彩色。

于 2018-06-14T09:47:21.670 回答