今天介绍一个小巧、没什么大作用、但是好看的模块——colorama,它可以让你的Terminal呈现出丰富多彩的颜色。
安装
由于Python默认没有自带,需要额外安装。
不能联网的,从下列网址下载源码。然后参照《
python的模块module介绍
》中介绍的离线、非管理员的安装方法。
https://pypi.org/project/colorama
https://github.com/tartley/colorama
colorama介绍
colorama的主要功能:输出一种跨平台的ANSI转义序列,Terminal收到这种特殊的序列后并不直接显示ASCII字符,而是显示指定的颜色。
ANSI escape code详细介绍https://en.wikipedia.org/wiki/ANSI_escape_code
简单的来说,colorama可以控制文字的颜色(Fore),背景色(Back),风格(Style)。
colorama支持8种颜色(前景色和背景色):BLACK、RED、GREEN、YELLOW、BLUE、MAGENTA、CYAN、WHITE。
colorama支持三种风格:NORMAL、BRIGHT、DIM
colorama的ANSI序列会影响后面输出的所有字符的颜色,直到遇到另一个ANSI序列,例如:
Fore.RED,abc,Fore.Blue,def,Fore.MAGENTA,ghi
其中,Fore.XXX不会真实打印出来,只是控制了随后的文字的颜色。
需要恢复默认颜色,可以用Fore.RESET,Back.RESET,或者Style.RESET_ALL。
如何使用
在colorama中定义的Fore.RED、Back.CYAN、Style.RESET_ALL等都是String型的字符串,用python的print()函数直接打印就行了。
示例一:
效果如下:
扩展colorama的功能
考虑到跨平台,colorama为了兼容windows dos等其它平台,仅使用了8种颜色。8种颜色似乎不太够用怎么办?比如,表示warning的橙色就没有,也没有字体加粗。
其实我们的Linux Terminal支持256色和24bit真彩色。我们再来了解ANSI转义序列,我从wikipedia整理了256色的控制方法,如下:
其中,\033是ESC的转义ASCII码,'\033['叫做CSI(Control Sequence Introducer),相当于控制头。38;表示控制前景色,48;表示控制背景色,5;表示采用256色模式,是颜色编码,m表示控制结束。
颜色编码的定义如下:
图片来自:
https://en.wikipedia.org/wiki/ANSI_escape_code
因此,\033[38;5;214m 就是把文字设成橙色。
更多功能:加粗、清除行、清屏
我们阅读wikipedia后,发现了更多功能:
示例二:
这个例子中,我们顺利实现了加粗,清除颜色等功能。效果如下:
其实,ANSI转义序列还可以用来控制光标移动。比如
我们利用光标移动指令来实现一个0%~100%进度指示,如下面的例子:
示例三:
效果如下:
总结
本文介绍了colorama模块的应用,以及使用自定义ANSI转义序列的方法来增强显示效果。
习题:
把report中的fail显示成红色。
欢迎关注ExASIC
分享数字集成电路设计中的经验和方法
分享让工作更轻松
领取专属 10元无门槛券
私享最新 技术干货