有时候需要在终端显示彩色的字符,即根据需要显示不同颜色的字符串,比如我们要在终端打印一行错误提示信息,要把它弄成红色的。其实这个在Python中很好实现,使用转义序列来实现不同颜色的显示,转义序列以ESC开头,它的ASCII码八进制为 /033。显示格式为:/033[显示方式;前景色;背景色m
用这种原生的转义序列输出,在linux下完全支持,但是在windows下确存在兼容问题,比如在win10下可以正常显示颜色,在win7下确不支持。因此可以使用python标准库提供的colorama模块
输出彩色字体,这个模块是跨平台的,内部实现也是采用转义序列来显示颜色的,只不过对windows平台做了特殊处理,因此完全兼容linux和windows各个版本。
以下封装了一个Colored类,提供了两个版本,第一个版本采用原生的转义字符序列输出各种颜。
第二个版本用python标准库的colorama模块兼容windows和linux。当要在终端打印彩色字体时直接调用对应的方法即可,很方便。
#coding:gbk# ------------------------------------------------# python终端显示彩色字符类,可以调用不同的方法# 选择不同的颜色.使用方法看示例代码就很容易明白.# ------------------------------------------------## 显示格式: /033[显示方式;前景色;背景色m# ------------------------------------------------# 显示方式 说明# 0 终端默认设置# 1 高亮显示# 4 使用下划线# 5 闪烁# 7 反白显示# 8 不可见# 22 非粗体# 24 非下划线# 25 非闪烁## 前景色 背景色 颜色# 30 40 黑色# 31 41 红色# 32 42 绿色# 33 43 黃色# 34 44 蓝色# 35 45 紫红色# 36 46 青蓝色# 37 47 白色# ------------------------------------------------class Colored(object): # 显示格式: /033[显示方式;前景色;背景色m # 只写一个字段表示前景色,背景色默认 RED = '/033[31m' # 红色 GREEN = '/033[32m' # 绿色 YELLOW = '/033[33m' # 黄色 BLUE = '/033[34m' # 蓝色 FUCHSIA = '/033[35m' # 紫红色 CYAN = '/033[36m' # 青蓝色 WHITE = '/033[37m' # 白色 #: no color RESET = '/033[0m' # 终端默认颜色 def color_str(self, color, s): return '{}{}{}'.format( getattr(self, color), s, self.RESET ) def red(self, s): return self.color_str('RED', s) def green(self, s): return self.color_str('GREEN', s) def yellow(self, s): return self.color_str('YELLOW', s) def blue(self, s): return self.color_str('BLUE', s) def fuchsia(self, s): return self.color_str('FUCHSIA', s) def cyan(self, s): return self.color_str('CYAN', s) def white(self, s): return self.color_str('WHITE', s) # ----------使用示例如下:-------------color = Colored()print color.red('I am red!')print color.green('I am gree!')print color.yellow('I am yellow!')print color.blue('I am blue!')print color.fuchsia('I am fuchsia!')print color.cyan('I am cyan!')print color.white('I am white')
新闻热点
疑难解答