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()

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

avatar

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

2. 彩色打印的原理分析

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

avatar

  • 第一部分是设置要打印内容的颜色等样式

  • 第二部分是要打印的内容

  • 第三部分是设置新一轮的颜色字体样式,此处是恢复到默认样式

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

\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的分享,可添加关注:

原文地址:https://www.cnblogs.com/crazyguo/p/15782300.html