Python 在终端中输入内容,如果能够高亮出某些关键性内容,能帮我们快速注意到输出内容,并且格式上也会更加美观。
1.1 自定义代码实现
1.1.1 实现过程
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。转义序列是以 ESC 开头,即用 \033
来完成(ESC 的 ASCII 码用十进制表示 27,用八进制表示就是 033)。
1.1.2 书写格式
打印的字符串必须符合格式,才能高亮出来,即开头部分+中间内容+结尾部分。
- 开头部分:
\033[显示方式;前景色;背景色m
- 开头部分中的三个参数:显示方式、前景色、背景色是可选参数,可以只写其中的一个;
- 另外由于表示三个参数不同含义的数值都是唯一的,所以三个参数的书写顺序没有固定要求,系统都可以识别
- 中间内容:需要高亮的内容
- 结尾部分:
\033[0m
💡 结尾部分其实也可以省略不写,但是为了书写规范,建议使用
\033[***开头, \033[0m
结尾。 💡 这里\033
也可以换成\x1b
1.1.3 数值表示的参数含义
- 显示方式: 0(默认值)、1(高亮)、22(非粗体)、4(下划线)、24(非下划线)、 5(闪烁)、25(非闪烁)、7(反显)、27(非反显)
- 前景色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)
- 背景色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)
1.1.4 常见开头
| CODE | 描述 | | —- | —- | | \033[0m | 默认字体正常显示,不高亮 | | \033[32;0m | 红色字体正常高亮 | | \033[1;32;40m | 显示方式:高亮;字体前景色:绿色;背景色:黑色 | | \033[0;31;46m | 显示方式:正常;字体前景色:红色;背景色:黑色 |
1.1.4 实例
print("\033[1;31;40m您输入的帐号或密码错误!\033[0m")
print("\033[0;31m%s\033[0m" % "输出红色字符")
1.2 TermColor
先安装 termcolor 第三方库:
pip install termcolor
1.2.1 示例
from termcolor import colored, cprint
text = colored("Hello, World!", "red", attrs=["reverse", "blink"])
print(text)
cprint("Hello, World!", "green", "on_red")
1.2.2 Properties
文字颜色 | 文字背景颜色 | 文字属性 |
---|---|---|
grey | on_grey | bold |
red | on_red | dark |
green | on_green | underline |
yellow | on_yellow | blink |
blue | on_blue | reverse |
magenta | on_magenta | concealed |
cyan | on_cyan | |
white | on_white |
1.2.3 Windows支持
termcolor
仅支持 linux 系统,对于 windows,需要结合 colorama 库进行使用。
from colorama import init
from termcolor import colored
# use Colorama to make Termcolor work on Windows too
init()
# then use Termcolor for all colored text output
print(colored('Hello, World!', 'green', 'on_red'))
💡 Linux 一定不要借助
colorama
,否则无法达到彩色字体的效果。 💡 测试下来,其实 Windows 下也不需要借助colorama
就可以实现彩色打印了。