最近在写Python脚本,看着自己控制台输出的一条条纯白信息,觉得实在是太单调了,也无法突出内容重点提高阅读效率,于是一拍大腿,得整点花里胡哨的!然后就研究了一下怎么修改Python输出信息颜色,不看不知道,一看就这?使用方法竟然如此简单,下面带大家来快速学习怎么修改输出文本颜色

简单使用

使用方式非常简单,格式如下,其中\033是ASCII中的一个转义字符,用来控制控制终端显示的文本格式和颜色,是一个固定格式,我们不要用管。重点看显示方式前景颜色背景颜色,我们控制输出文本的颜色和格式就是通过这三个字段

1
"\033[显示方式;前景颜色;背景颜色m"+ "输出的文本内容" +"\033[0m"

例如我们要用输出一个粗体红色字体蓝色背景的字符串,就可以按下面这样写

1
print("\033[1;31;44m"+ "我是要输出的文本内容" +"\033[0m")

显示的效果如下,实现很简单吧,就修改三个字段就行

由于修改文本格式和颜色的方式实质就是在字符串前后拼接ASCII控制符,通过修改控制符参数来修改文本格式,实质上只是字符串拼接,因此可以在任何输出方法处使用,例如除了我们最常用到的print(),还可以在logging模块的日志输出中使用

1
2
3
4
import logging

logging.basicConfig(level=logging.INFO)
logging.info("\033[1;31;44m"+ "我是要输出的文本内容" +"\033[0m")

下面就来简要说明一下控制文本格式和颜色的这三个字段怎么使用,保证一看就会!

显示方式

常用的几种显示方式如下表所示,自定义文本格式时查阅该表就行

显示方式 效果
0 默认终端设置
1 高亮显示(粗体)
4 使用下划线
5 闪烁
7 反白显示(置换前景色和背景色)
8 不可见

控制文本格式和颜色的显示方式、前景颜色、背景颜色这三个字段都可以省略,会自动使用默认值,默认值就是我们平常在控制台输出那样纯白

通过下面代码只修改显示方式,省略前景色和背景色部分,可以查看不同显示方式的区别,推荐自己用python程序运行一下,不同的系统输出结果可能不同

1
2
3
4
5
6
7
8
9
10
11
12
13
print("\033[0m"+ "0: 默认终端显示" +"\033[0m",end="\t\t")
print("\033[1m"+ "1: 高亮显示" +"\033[0m",end="\t\t")
print("\033[4m"+ "4: 下划线显示" +"\033[0m")
print("\033[5m"+ "5: 闪烁显示" +"\033[0m",end="\t\t")
print("\033[7m"+ "7: 反白显示" +"\033[0m",end="\t\t")
print("\033[8m"+ "8: 不可见" +"\033[0m")
print()
print("\033[0;46m"+ "0: 默认终端显示" +"\033[0m",end="\t\t")
print("\033[1;46m"+ "1: 高亮显示" +"\033[0m",end="\t\t")
print("\033[4;46m"+ "4: 下划线显示" +"\033[0m")
print("\033[5;46m"+ "5: 闪烁显示" +"\033[0m",end="\t\t")
print("\033[7;46m"+ "7: 反白显示" +"\033[0m",end="\t\t")
print("\033[8;46m"+ "8: 不可见" +"\033[0m")

Windows系统控制台默认输出效果如下

前景色和背景色

常用的前景色和背景色参数值如下

字体色 背景色 效果
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色

通过下面代码只修改前景色或背景色,省略显示方式部分,一样推荐自己用Python程序跑一便看看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
print("\033[30m"+ "30: 黑色" +"\033[0m",end="\t\t")
print("\033[31m"+ "31: 红色" +"\033[0m",end="\t\t")
print("\033[32m"+ "32: 绿色" +"\033[0m")
print("\033[33m"+ "33: 黄色" +"\033[0m",end="\t\t")
print("\033[34m"+ "34: 蓝色" +"\033[0m",end="\t\t")
print("\033[35m"+ "35: 紫红色" +"\033[0m")
print("\033[36m"+ "36: 青蓝色" +"\033[0m",end="\t\t")
print("\033[37m"+ "37: 白色" +"\033[0m")
print()
print("\033[40m"+ "40: 黑色" +"\033[0m",end="\t\t")
print("\033[41m"+ "41: 红色" +"\033[0m",end="\t\t")
print("\033[42m"+ "42: 绿色" +"\033[0m")
print("\033[43m"+ "43: 黄色" +"\033[0m",end="\t\t")
print("\033[44m"+ "44: 蓝色" +"\033[0m",end="\t\t")
print("\033[45m"+ "45: 紫红色" +"\033[0m")
print("\033[46m"+ "46: 青蓝色" +"\033[0m",end="\t\t")
print("\033[47m"+ "47: 白色" +"\033[0m")

Windows系统控制台默认颜色效果如下:

混合颜色

知道了前景色和背景色的区别,我们就可以任何组合前景色和背景色来自定义我们要想输出的文本颜色格式

和前面一样,提供一串代码用于查看不同颜色的显示效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
print('\033[30;40m' + '  0;30;40  ' + '\033[0m',end="")
print('\033[30;41m' + ' 0;30;41 ' + '\033[0m',end="")
print('\033[30;42m' + ' 0;30;42 ' + '\033[0m',end="")
print('\033[30;43m' + ' 0;30;43 ' + '\033[0m',end="")
print('\033[30;44m' + ' 0;30;44 ' + '\033[0m',end="")
print('\033[30;45m' + ' 0;30;45 ' + '\033[0m',end="")
print('\033[30;46m' + ' 0;30;46 ' + '\033[0m',end="")
print('\033[30;47m' + ' 0;30;47 ' + '\033[0m')
print('\033[31;40m' + ' 0;31;40 ' + '\033[0m',end='')
print('\033[31;41m' + ' 0;31;41 ' + '\033[0m',end='')
print('\033[31;42m' + ' 0;31;42 ' + '\033[0m',end='')
print('\033[31;43m' + ' 0;31;43 ' + '\033[0m',end='')
print('\033[31;44m' + ' 0;31;44 ' + '\033[0m',end='')
print('\033[31;45m' + ' 0;31;45 ' + '\033[0m',end='')
print('\033[31;46m' + ' 0;31;46 ' + '\033[0m',end='')
print('\033[31;47m' + ' 0;31;47 ' + '\033[0m')
print('\033[32;40m' + ' 0;32;40 ' + '\033[0m',end='')
print('\033[32;41m' + ' 0;32;41 ' + '\033[0m',end='')
print('\033[32;42m' + ' 0;32;42 ' + '\033[0m',end='')
print('\033[32;43m' + ' 0;32;43 ' + '\033[0m',end='')
print('\033[32;44m' + ' 0;32;44 ' + '\033[0m',end='')
print('\033[32;45m' + ' 0;32;45 ' + '\033[0m',end='')
print('\033[32;46m' + ' 0;32;46 ' + '\033[0m',end='')
print('\033[32;47m' + ' 0;32;47 ' + '\033[0m')
print('\033[33;40m' + ' 0;33;40 ' + '\033[0m',end='')
print('\033[33;41m' + ' 0;33;41 ' + '\033[0m',end='')
print('\033[33;42m' + ' 0;33;42 ' + '\033[0m',end='')
print('\033[33;43m' + ' 0;33;43 ' + '\033[0m',end='')
print('\033[33;44m' + ' 0;33;44 ' + '\033[0m',end='')
print('\033[33;45m' + ' 0;33;45 ' + '\033[0m',end='')
print('\033[33;46m' + ' 0;33;46 ' + '\033[0m',end='')
print('\033[33;47m' + ' 0;33;47 ' + '\033[0m')
print('\033[34;40m' + ' 0;34;40 ' + '\033[0m',end='')
print('\033[34;41m' + ' 0;34;41 ' + '\033[0m',end='')
print('\033[34;42m' + ' 0;34;42 ' + '\033[0m',end='')
print('\033[34;43m' + ' 0;34;43 ' + '\033[0m',end='')
print('\033[34;44m' + ' 0;34;44 ' + '\033[0m',end='')
print('\033[34;45m' + ' 0;34;45 ' + '\033[0m',end='')
print('\033[34;46m' + ' 0;34;46 ' + '\033[0m',end='')
print('\033[34;47m' + ' 0;34;47 ' + '\033[0m')
print('\033[35;40m' + ' 0;35;40 ' + '\033[0m',end='')
print('\033[35;41m' + ' 0;35;41 ' + '\033[0m',end='')
print('\033[35;42m' + ' 0;35;42 ' + '\033[0m',end='')
print('\033[35;43m' + ' 0;35;43 ' + '\033[0m',end='')
print('\033[35;44m' + ' 0;35;44 ' + '\033[0m',end='')
print('\033[35;45m' + ' 0;35;45 ' + '\033[0m',end='')
print('\033[35;46m' + ' 0;35;46 ' + '\033[0m',end='')
print('\033[35;47m' + ' 0;35;47 ' + '\033[0m')
print('\033[36;40m' + ' 0;36;40 ' + '\033[0m',end='')
print('\033[36;41m' + ' 0;36;41 ' + '\033[0m',end='')
print('\033[36;42m' + ' 0;36;42 ' + '\033[0m',end='')
print('\033[36;43m' + ' 0;36;43 ' + '\033[0m',end='')
print('\033[36;44m' + ' 0;36;44 ' + '\033[0m',end='')
print('\033[36;45m' + ' 0;36;45 ' + '\033[0m',end='')
print('\033[36;46m' + ' 0;36;46 ' + '\033[0m',end='')
print('\033[36;47m' + ' 0;36;47 ' + '\033[0m')
print('\033[37;40m' + ' 0;37;40 ' + '\033[0m',end='')
print('\033[37;41m' + ' 0;37;41 ' + '\033[0m',end='')
print('\033[37;42m' + ' 0;37;42 ' + '\033[0m',end='')
print('\033[37;43m' + ' 0;37;43 ' + '\033[0m',end='')
print('\033[37;44m' + ' 0;37;44 ' + '\033[0m',end='')
print('\033[37;45m' + ' 0;37;45 ' + '\033[0m',end='')
print('\033[37;46m' + ' 0;37;46 ' + '\033[0m',end='')
print('\033[37;47m' + ' 0;37;47 ' + '\033[0m')

Windows终端默认颜色显示效果可以参考下图

封装成类

实际常用的颜色也就这么几种,如果每次写代码都要来查要使用的颜色的值,多少会有些麻烦,可以将常见的颜色格式封装为类,要修改文本颜色时只要调用对应的类方法就行

虽然说文章开头说要整点花里胡哨的,但是要在代码中使用还是要弄得简单一点,因此下面提供的Color类仅提供了修改字体颜色的方法,显示格式和背景色都未进行修改,使用默认值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Color:
def __init__(self):
self.Black = '\033[1;30m' # 黑色
self.Red = '\033[1;31m' # 红色
self.Green = '\033[1;32m' # 绿色
self.Yellow = '\033[1;33m' # 黄色
self.Blue = '\033[1;34m' # 蓝色
self.Fuchsia = '\033[1;35m' # 紫红色
self.Cyan = '\033[1;36m' # 青蓝色
self.White = '\033[1;37m' # 白色
self.Reset = '\033[0m' # 终端默认颜色

def black(self, text):
return "{0}{1}{2}".format(self.Black, text, self.Reset)

def red(self, text):
return "{0}{1}{2}".format(self.Red, text, self.Reset)

def green(self, text):
return "{0}{1}{2}".format(self.Green, text, self.Reset)

def yellow(self, text):
return "{0}{1}{2}".format(self.Yellow, text, self.Reset)

def blue(self, text):
return "{0}{1}{2}".format(self.Blue, text, self.Reset)

def fuchsia(self, text):
return "{0}{1}{2}".format(self.Fuchsia, text, self.Reset)

def cyan(self, text):
return "{0}{1}{2}".format(self.Cyan, text, self.Reset)

def white(self, text):
return "{0}{1}{2}".format(self.White, text, self.Reset)

需要设置文本显示颜色时,可以直接调用这个类的方法给指定字符串染色

1
2
3
4
5
6
7
8
9
color = Color()
print("我想要输出{}".format(color.black("黑色")))
print("我想要输出{}".format(color.red("红色")))
print("我想要输出{}".format(color.yellow("黄色")))
print("我想要输出{}".format(color.green("绿色")))
print("我想要输出{}".format(color.blue("蓝色")))
print("我想要输出{}".format(color.fuchsia("紫红色")))
print("我想要输出{}".format(color.cyan("青蓝色")))
print("我想要输出{}".format(color.white("白色")))

显示效果如下,Python控制台输出颜色控制就是这么的简单,快去让你的代码输出变得丰富起来吧!