python控制台打印彩色输出

在编写python程序的时候,在控制台输出的程序信息,如果能够进行彩色打印,不同信息类别按颜色进行打印,是一个很好的开发体验,那么python是如何在控制台中实现的呢?本案例会给你一个答案。

1. 彩色输出程序

def colored_print():
    val1 = x1b[1;33;40m + yellow color print + x1b[0m
    print(val1)

    print(normal print)

    val3 = 33[0;32;40m + green color print + 33[0m
    print(val3)

if __name__ == __main__:
    colored_print()

运行程序输出效果如下图:

程序这里没有借助任何第三方应用库,全部是靠python自己实现,那么背后的原理是什么呢?

2. 彩色打印的原理分析

我们将python打印的内如,可以分割出如下3部分:

    第一部分是设置要打印内容的颜色等样式 第二部分是要打印的内容 第三部分是设置新一轮的颜色字体样式,此处是恢复到默认样式

第一部分和第二部分格式本质上是一样的,这里我们就来分析其具体格式:

x1b[1;33;40m
    x1b调用函数,也可以使用33达到同样的目的 1;32;40这3部分以;分割,其中第一部分是命令,用来设置对应的属性,这里的1表示高亮显示;第二部分32,这里表示的是字体的颜色,33表示黄色;第三部分40这里表示的是字体的背景色,40为黑色。 m是函数名称,这里表示的是SGR(Select Graphics Rendition)函数。

2.1 命令属性

33[0m 关闭所有属性
      33[1m 设置高亮度
      33[4m 下划线
      33[5m 闪烁
      33[7m 反显
      33[8m 消隐
      33[30m 至 33[37m 设置前景色
      33[40m 至 33[47m 设置背景色
      33[nA 光标上移n行 
      33[nB 光标下移n行
      33[nC 光标右移n行
      33[nD 光标左移n行
      33[y;xH设置光标位置
      33[2J 清屏
      33[K 清除从光标到行尾的内容
      33[s 保存光标位置 
      33[u 恢复光标位置
      33[?25l 隐藏光标
      33[?25h 显示光标

2.2 字体颜色

40:黑
      41:深红
      42:绿
      43:黄色
      44:蓝色
      45:紫色
      46:深绿
      47:白色

2.3 字体背景颜色

30:黑
      31:红
      32:绿
      33:黄
      34:蓝色
      35:紫色
      36:深绿 
      37:白色

小结

通过本案例,我们知道了python进行控制台打印输出,靠的是通过特殊编码命令实现的,懂得了这个基础,我们就明白了诸如pprint和第三方类库termcolor的原理。

经验分享 程序员 微信小程序 职场和发展