📜 原文链接:https://www.cnblogs.com/hellojesson/p/5961570.html

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 实例

  1. print("\033[1;31;40m您输入的帐号或密码错误!\033[0m")
  2. print("\033[0;31m%s\033[0m" % "输出红色字符")

1.2 TermColor

先安装 termcolor 第三方库:

  1. pip install termcolor

1.2.1 示例

  1. from termcolor import colored, cprint
  2. text = colored("Hello, World!", "red", attrs=["reverse", "blink"])
  3. print(text)
  4. 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 库进行使用。

  1. from colorama import init
  2. from termcolor import colored
  3. # use Colorama to make Termcolor work on Windows too
  4. init()
  5. # then use Termcolor for all colored text output
  6. print(colored('Hello, World!', 'green', 'on_red'))

💡 Linux 一定不要借助 colorama,否则无法达到彩色字体的效果。 💡 测试下来,其实 Windows 下也不需要借助 colorama 就可以实现彩色打印了。