首页Python【Python计算生态】t...

【Python计算生态】termcolor——在终端输出中添加ANSI颜色格式化

Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。

本系列将会陆续整理分享一些有趣、有用的第三方库。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_Ecosystem





01
简介

termcolorPython第三方库,用于在终端中输出彩色文本。它通过ANSI转义序列实现颜色和样式的控制,支持常见的文字颜色、背景色和文本样式(如加粗、下划线等)。
直接使用pip安装:
pip install termcolor

02
函数

termcolor主要包含colored()cprint()两个函数,并支持文本颜色、背景色和样式的设置:

  •  colored() 函数:
功能:生成一个带有颜色、背景色和文本属性的字符串。
参数:
  • text: 要格式化的文本。
  • color: 文字颜色(如 ‘red’, ‘green’, ‘yellow’)。
  • on_color: 背景颜色(如 ‘on_red’, ‘on_blue’)。
  • attrs: 文本属性(如 [‘bold’, ‘underline’])。
示例:
from termcolor import colored

# 设置文本颜色
print(colored('这是红色文本''red'))
print(colored('这是绿色文本''green'))

# 设置背景颜色
print(colored('这是黄色背景的文本''white''on_yellow'))

# 设置文本样式
print(colored('这是高亮的红色文本''red', attrs=['bold']))
print(colored('这是闪烁的蓝色文本''blue', attrs=['blink']))

  • cprint() 函数:
能:可以直接打印彩色文本。而无需先调用colored函数,等价于 print(colored(…))参数与 colored() 相同。并且支持标准 print() 函数的参数(如 end, file 等)。
示例:
from termcolor import cprint

cprint('这是绿色文本''green')
cprint('这是带有红色背景的文本''white''on_red')
cprint('这是加粗的黄色文本''yellow', attrs=['bold'])

  • 支持的颜色和样式:
termcolor 支持以下颜色和样式:
前景色:black、red、green、yellow、blue、magenta、cyan、white、light_grey、dark_grey、light_red、light_green、light_yellow、light_blue、light_magenta、light_cyantermcolor仅支持预设颜色,若需RGB或更多颜色,可考虑rich、blessed等库。
背景色:在颜色前加on_前缀,如on_black、on_red、on_green、on_yellow、on_blue、on_magenta、on_cyan、on_white等。
样式:bold(加粗)、dark(暗淡)、underline(下划线)、blink(闪烁)、reverse(反显)、concealed(隐藏)、strike(删除线)。
需要注意的是,termcolor的颜色显示依赖于终端的支持。并非所有终端都支持所有颜色和属性(例如blink在某些终端无效)。
如果需要在Windows系统的命令行中使用termcolor,建议结合colorama库来解决兼容性问题(启用ANSI转义支持)。
import colorama
colorama.init()

  • 覆盖设置:
可以以以下几种方式启用或禁用终端颜色检测(按优先级顺序):
  • 调用coloredcprint时,将no_color参数设置为真值,将禁用颜色。
  • 调用coloredcprint时,将force_color参数设置为真值,将强制启用颜色。
  • ANSI_COLORS_DISABLED环境变量设置为任意值,将禁用颜色。
  • NO_COLOR环境变量设置为任意值,将禁用颜色。
  • FORCE_COLOR环境变量设置为任意值,将强制启用颜色。
  • TERM环境变量设置为dumb,或者使用此类“哑终端”,将禁用颜色。
最后,termcolor将尝试检测终端是否支持颜色。
03
示例

以下是一些简单示例,展示了如何使用termcolor打印彩色和样式化的文本:

  • 示例 1:

import sys
from termcolor import cprint

# 定义一个打印函数
print_red_on_cyan = lambda x: cprint(x, "red""on_cyan")
print_red_on_cyan("Hello, World!")
print_red_on_cyan("Hello, Universe!")

# 循环打印彩色文本
for i in range(10):
    cprint(i, "magenta", end=" ")

# 打印到标准错误流
cprint("Attention!""red", attrs=["bold"], file=sys.stderr)

输出效果:


  • 示例 2:

from termcolor import colored

headers = ["Name""Age""Status"]
data = [
    ["Alice", 30, colored("Active""green")],
    ["Bob", 25, colored("Inactive""red")],
]

print(colored("{:<10} {:<5} {:<10}".format(*headers), "cyan"))
for row in data:
    print("{:<10} {:<5} {:<10}".format(*row))

输出效果:

更多内容可以前往GitHub查看:

https://github.com/termcolor/termcolor

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments