今天知道了一个控制终端输出颜色的第三方库 termcolor,代码很简单:
|
不过它不支持 Windows,另外有一个复杂一些但是全平台通用的 colorama,见 http://stackoverflow.com/questions/21858567/why-termcolor-doesnt-work-in-python
代码中设置颜色的部分有点费解,查阅其用到的知识点如下
ANSI 控制码
ANSI 控制码即控制序列(Control Sequence)。大多数终端模拟器(Unix,Linux,Windows)都支持 ANSI 控制码。ANSI 控制码以 ESC 字符(ASCII 27/0x1b/033)开头,分为两类:
- 非 CSI 序列
双字符控制码,格式为ESC``字符
,第二个字符的范围是 ASCII 64~95 (‘@’~’_’) - CSI 序列
多于两个字符,格式为ESC[``其余字符
常用序列表可见 https://en.wikipedia.org/wiki/ANSI_escape_code
颜色控制
其中设定终端文本颜色的序列格式为ESC[``编号``;编号``m
颜色分为字体色(前景色)和背景色,30~37用来设置字体色,40~47设置背景色,其他常用控制码:
- \033[0m 重置所有属性
- \033[1m 设置高亮度
- \033[4m 下划线
- \033[5m 闪烁
- \033[7m 反色
用例
\033[1;31;40m
1-高亮显示,31-前景色红色,40-背景色黑色
\033[0m
重置,即恢复默认设置