python在终端输出有颜色字符串

python程序在终端里print输出的内容,都是黑底白色的文字,看久了不免乏味枯燥。有一些库支持在终端,例如CMD里输出有颜色的字符串,我一直很好奇他们是怎么实现的,今天研究了一下,发现很简单。

想要在终端里输出有颜色的文字,需要使用ANSI颜色转义,NSI颜色转义集合是选择图形渲染的子集,转义的形式如下

\033[XXXm

它总是以\0033[开头,以小写m结尾,中间的XXX是一系列用分号分隔的参数,主要的参数定义如下
ANSI颜色转义

只要能构造出符合格式要求的字符串,就可以在终端里输出有颜色的字体,下面是几个具体的例子

import os
os.system("")

print("\033[31;5m成功的消息\033[0m")
print("\033[32;5m失败的消息\033[0m")
print("\033[33;5m告警的消息\033[0m")
print("\033[34;5m普通消息")

实际效果如下图所示
python终端输出带颜色文字

31,32,33,34 分别代表红色,绿色,黄色,蓝色,5表示闪烁,在CMD里不能闪烁,因为不支持,0表示恢复原始设置,如果不加\033[0m这段,程序里后续的输出会遵照前面的设置进行输出。

如果你使用的pycharm比较新,它已经支持了ANSI颜色转义,在CMD窗口里,必须执行os.system("")这行神奇的代码,才能正常显示。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案