python控制台打印彩色输出
在编写python程序的时候,在控制台输出的程序信息,如果能够进行彩色打印,不同信息类别按颜色进行打印,是一个很好的开发体验,那么python是如何在控制台中实现的呢?本案例会给你一个答案。
1. 彩色输出程序
def colored_print():
val1 = '\x1b[1;33;40m' + 'yellow color print' + '\x1b[0m'
print(val1)
print('normal print')
val3 = '\033[0;32;40m' + 'green color print' + '\033[0m'
print(val3)
if __name__ == '__main__':
colored_print()
运行程序输出效果如下图:
程序这里没有借助任何第三方应用库,全部是靠python自己实现,那么背后的原理是什么呢?
2. 彩色打印的原理分析
我们将python打印的内如,可以分割出如下3部分:
-
第一部分是设置要打印内容的颜色等样式
-
第二部分是要打印的内容
-
第三部分是设置新一轮的颜色字体样式,此处是恢复到默认样式
第一部分和第二部分格式本质上是一样的,这里我们就来分析其具体格式:
\x1b[1;33;40m
-
\x1b调用函数,也可以使用\033达到同样的目的
-
1;32;40这3部分以;分割,其中第一部分是命令,用来设置对应的属性,这里的1表示高亮显示;第二部分32,这里表示的是字体的颜色,33表示黄色;第三部分40这里表示的是字体的背景色,40为黑色。
-
m是函数名称,这里表示的是SGR(Select Graphics Rendition)函数。
2.1 命令属性
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m 至 \33[37m 设置前景色
\033[40m 至 \33[47m 设置背景色
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
2.2 字体颜色
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色
2.3 字体背景颜色
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色
小结
通过本案例,我们知道了python进行控制台打印输出,靠的是通过特殊编码命令实现的,懂得了这个基础,我们就明白了诸如pprint和第三方类库termcolor的原理。
本文首发于个人公众号,如果想了解一手关于python的分享,可添加关注: