有时候需要在终端显示彩色的字符,即根据需要显示不同颜色的字符串,比如我们要在终端打印一行错误提示信息,要把它弄成红色的。其实这个在Python中很好实现,使用转义序列来实现不同颜色的显示,转义序列以ESC开头,它的ASCII码八进制为 \033。显示格式为:\033[显示方式;前景色;背景色m

用这种原生的转义序列输出,在linux下完全支持,但是在windows下确存在兼容问题,比如在win10下可以正常显示颜色,在win7下确不支持。因此可以使用python标准库提供的colorama模块

输出彩色字体,这个模块是跨平台的,内部实现也是采用转义序列来显示颜色的,只不过对windows平台做了特殊处理,因此完全兼容linux和windows各个版本。

以下封装了一个Colored类,提供了两个版本,第一个版本采用原生的转义字符序列输出各种颜。

第二个版本用python标准库的colorama模块兼容windows和linux。当要在终端打印彩色字体时直接调用对应的方法即可,很方便。

一.Colored版本

1:采用原生的转义字符序列---对windows有的版本不支持(比如win7),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')


运行效果:


二.Colored版本

2:采用python标准库的colorama模块--兼容linux和windows各个版本:

运行效果:


# -----------------colorama模块的一些常量---------------------------

# Fore: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.

# Back: BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET.

# Style: DIM, NORMAL, BRIGHT, RESET_ALL

#

from coloramaimport init, Fore, Back, Style

init(autoreset=True)

class Colored(object):

# 前景色:红色 背景色:默认

def red(self, s):

return Fore.RED+ s+ Fore.RESET

# 前景色:绿色 背景色:默认

def green(self, s):

return Fore.GREEN+ s+ Fore.RESET

# 前景色:黄色 背景色:默认

def yellow(self, s):

return Fore.YELLOW+ s+ Fore.RESET

# 前景色:蓝色 背景色:默认

def blue(self, s):

return Fore.BLUE+ s+ Fore.RESET

# 前景色:洋红色 背景色:默认

def magenta(self, s):

return Fore.MAGENTA+ s+ Fore.RESET

# 前景色:青色 背景色:默认

def cyan(self, s):

return Fore.CYAN+ s+ Fore.RESET

# 前景色:白色 背景色:默认

def white(self, s):

return Fore.WHITE+ s+ Fore.RESET

# 前景色:黑色 背景色:默认

def black(self, s):

return Fore.BLACK

# 前景色:白色 背景色:绿色

def white_green(self, s):

return Fore.WHITE+ Back.GREEN+ s+ Fore.RESET+ Back.RESET

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.magenta('I am magenta!')

print color.cyan('I am cyan!')

print color.white('I am white!')

print color.white_green('I am white green!')