Python常用模块介绍:colorama

今天介绍一个小巧、没什么大作用、但是好看的模块——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

分享数字集成电路设计中的经验和方法

分享让工作更轻松

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190122G10WPH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券