Python控制台打印不同颜色

在Python终端输出颜色和在Linux下输出颜色是一样的,这两个终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。

转义字符格式为:

\033[{mode};{fore};{back}m

其中花括号内要填写具体的数值常量,它影响的是转义字符后的所有文字,其中每个参数之间用分号隔开。

另外,每个参数都可以省略,表示承接之前的参数。例如,如果要省略back参数,只需要|033[{mode};{fore}m即可;如果要省略mode参数,则使用\033[;{fore};{back}m,以此类推。

其中mode表示显示模式(有六种),fore和back分别表示前景色和背景色(一般有8种,占据了3x和4x,但有的说还有一些颜色在9x上),具体的效果可以查看这个问题:

How to print colored text in terminal in Python?

摘自上面的问题的答案,通过运行下面的Python代码可以看到所有的效果

def print_format_table():
    """
    prints table of formatted text format options
    """
    for style in range(8):
        for fg in range(30,38):
            s1 = ''
            for bg in range(40,48):
                format = ';'.join([str(style), str(fg), str(bg)])
                s1 += '\x1b[%sm %s \x1b[0m' % (format, format)
            print(s1)
        print('\n')

print_format_table()

在win平台的cmd下运行会发现转义字符不起作用,是因为cmd没有实现这个转义的规范,而是需要借助win32 API,具体解释可以参考Linux终端和win32控制台文本颜色输出

在Python下的实现方式可以查看Python实现修改Windows CMD命令行输出颜色(完全解析),通过使用ctypes这个内置库来运行

最后,为了在Python下无脑兼容各个平台,我写了一个库colorprint,通过判断终端环境和平台来调用不同的输出方法,比较方便,而且目前测试效果良好,使用方式:

安装

pip install colorprint

展示示例:

from colorprint.example import printall
printall()

使用方法和print函数几乎完全一致,但添加了返回方法本身的返回值,可以通过叠加括号不断的输出:

from colorprint.printer import uprint
from colorprint.unicolor import *
uprint("FOREGROUND_GREEN\n", fore=FOREGROUND_GREEN)
uprint("BACKGROUND_WHITE\n", back=BACKGROUND_WHITE)

uprint("MODE_NORMAL\n", mode=MODE_NORMAL)\
    ("MODE_BLINK\n", mode=MODE_BLINK)\
    ("MODE_BOLD\n", mode=MODE_BOLD)\
    ("MODE_HIDE\n", mode=MODE_HIDE)\
    ("MODE_INVERT\n", mode=MODE_INVERT)\
    ("MODE_UNDERLINE\n", mode=MODE_UNDERLINE)

更多特性和后续更新可以查看项目的说明文档

发布了132 篇原创文章 · 获赞 77 · 访问量 12万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览