Python ANSI颜色代码

时间:2017-09-24 05:25:05

标签: python-3.x terminal

Python打印上的Python 3.7在ANSI颜色代码中无法正常工作,直到在subprocess.call()中shell = True一次。

在下面的链接中,似乎暗示ANSI颜色代码应该使用" print"开箱即用的命令。

How to print colour/color in python? Print in terminal with colors using Python?

第二个提到VT100仿真......不确定究竟是什么意思。我能够编写一个输出颜色的批处理文件,所以我会(天真地)认为它应该在Python中以相同的方式工作。

但是我无法使用ANSI颜色代码,因为似乎ESC字符被注释掉了#34;(?),因为例如我

print(u"\u001b[31mHelloWorld")

我无法看到彩色输出,因为ESC字符在Windows中似乎是必要的,并且在python shell中打印为" [?]" (带问号的方框)

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我发现自己是一个答案。经常发生的事情,我看起来不够远。

可以使用

安装Colorama模块

py -m pip install colorama

并在名为init

的模块的根目录中附带方法定义

colorama.init()

这是一个跨平台功能,因为它仅对Windows有用(它保存活动终端状态以进行反转并将终端写入预处理ANSI代码),它对其他操作系统没有任何作用。

我正在考虑使用ctypes实现更轻量级的解决方案,并在我自己的活动终端上设置Interpret标志。

如果您对更多信息感兴趣,请参阅此处:

https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences

  

输出序列   如果使用SetConsoleMode标志在屏幕缓冲区句柄上设置了ENABLE_VIRTUAL_TERMINAL_PROCESSING标志,则在写入输出流时,控制台主机会截获以下终端序列。请注意,DISABLE_NEWLINE_AUTO_RETURN标志在模拟其他终端仿真器相对于写入任意行中最后一列的字符的游标定位和滚动行为时也很有用。

强调我的。