Python模块在Windows上为stdout启用ANSI颜色?

sor*_*rin 14 python terminal console ansi-escape

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

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

Eri*_*got 12

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

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


bog*_*dan 6

有两个能够执行此操作的python模块coloramatendo.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!"
Run Code Online (Sandbox Code Playgroud)

现在,两者都将正常工作,但如果您尝试仅重定向stderr或stdout中的一个,则ansiterm将输出ANSI代码到屏幕并重定向输出.

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