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

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

file

2 彩色打印的原理分析

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

file

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

第一部分和第二部分格式本质上是一样的,这里我们就来分析其具体格式:\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的原理。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注