zoukankan      html  css  js  c++  java
  • 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的分享,可添加关注:

  • 相关阅读:
    iris数据集
    codevs 1262 不要把球传我 2012年CCC加拿大高中生信息学奥赛
    codevs 1742 爬楼梯(水题日常)
    codevs 2277 爱吃皮蛋的小明(水题日常)
    洛谷 P3386 【模板】二分图匹配
    vijos 1190 繁忙的都市
    codevs 1487 大批整数排序(水题日常)
    洛谷 P2820 局域网
    codevs 1683 车厢重组(水题日常)
    codevs 1228 苹果树
  • 原文地址:https://www.cnblogs.com/crazyguo/p/15782300.html
Copyright © 2011-2022 走看看