(先问个扎心的问题)你在终端打印日志时是不是还在用print("=======ERROR=======")这种原始标记法?每次调试时面对满屏的灰底白字,是不是感觉眼睛都要看瞎了?今天我要安利一个Python界的"终端美颜神器"——Rich库!

一、这个库到底牛在哪?

先看个对比图(脑补一下):
普通打印:

Processing item 1/100
Processing item 2/100
...

Rich打印:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(是不是瞬间感受到降维打击?)Rich的核心优势就三个字——富文本!它能做到:

  • ✅ 彩色文字和背景(告别黑白世界)
  • ✅ 自动对齐的表格(再也不用数空格)
  • ✅ 动态进度条(告别自制旋转光标)
  • ✅ 语法高亮(直接在终端看彩色代码)
  • ✅ Markdown渲染(终端里写文档不是梦)

二、5分钟快速上手

安装只需一行(懂的都懂):

pip install rich

基础用法示例:

from rich import print

print("[bold red]警报![/] 服务器CPU使用率 [underline]90%[/]")
print(":smile: 支持表情符号!")
print("[#00ff00 on black]赛博朋克风文字[/]")

运行效果(想象一下):

  • 红色粗体的"警报!"
  • 带下划线的90%
  • 绿色黑底的文字
  • 还有个笑脸emoji

(惊不惊喜?这还只是皮毛!)

三、核心功能实战教学

1. 表格生成器(杀手机器)

传统方式生成表格得各种计算列宽,Rich只需要:

from rich.console import Console
from rich.table import Table

console = Console()

table = Table(title="学生成绩单")
table.add_column("姓名", style="cyan")
table.add_column("数学", justify="right")
table.add_column("语文", justify="right")

table.add_row("张三", "90", "85")
table.add_row("李四", "[red]55[/]", "78")  # 不及格标红

console.print(table)

输出自动对齐,颜色标记异常值,这可比Excel还直观!

2. 进度条三连击

from rich.progress import track
import time

# 基础款
for _ in track(range(100)):
    time.sleep(0.1)

# 多任务版
from rich.progress import Progress

with Progress() as progress:
    task1 = progress.add_task("[red]下载...", total=100)
    task2 = progress.add_task("[green]处理...", total=50)
    
    while not progress.finished:
        progress.update(task1, advance=0.9)
        progress.update(task2, advance=0.5)
        time.sleep(0.02)

(亲眼看到动态进度条在终端里跑起来的时候,我激动得拍大腿!)

3. 语法高亮黑科技

from rich.console import Console
from rich.syntax import Syntax

console = Console()
code = '''
def hello(name: str) -> None:
    print(f"Hello {name}!")
'''
syntax = Syntax(code, "python", theme="monokai")
console.print(syntax)

直接在终端里展示彩色代码,调试时再也不用切IDE看了!

四、高级玩法揭秘

自定义主题(装X必备)

创建~/.config/rich/theme.json

{
    "info": "dim cyan",
    "warning": "magenta",
    "danger": "bold red"
}

代码中使用:

console.print("这是信息", style="info")
console.print("这是警告", style="warning") 

异常美化(错误日志秒变清晰)

from rich.traceback import install
install(show_locals=True)

# 故意引发错误
1 / 0

错误信息会自动高亮关键部分,连本地变量值都给你显示出来!

与logging模块集成

from rich.logging import RichHandler
import logging

logging.basicConfig(
    level="INFO",
    format="%(message)s",
    handlers=[RichHandler(rich_tracebacks=True)]
)

logger = logging.getLogger("main")
logger.info("带样式的日志信息")
logger.error("发生错误!", extra={"markup": True})

五、实战经验分享

我在最近的项目中用Rich做了这些骚操作:

  1. 监控面板:用多个进度条+实时表格展示服务器状态
  2. CLI工具:带彩色帮助文档,参数错误时自动高亮提示
  3. 测试报告:失败用例用红色标记,通过率用进度条展示

(有个坑要注意!)在Docker环境中有时会出现颜色异常,解决办法是设置环境变量:

console = Console(force_terminal=True)

六、横向对比其他库

功能 Rich colorama termcolor
颜色支持
表格
进度条
Markdown
语法高亮

(结论很明显了吧?)Rich简直就是终端美化的六边形战士!

七、写在最后

用了Rich之后最大的感受:命令行工具也可以做得很有"产品感"!虽然会让代码依赖增加(谁让它这么香呢),但对于需要用户交互的CLI工具来说,体验提升不是一点半点。

最后送大家一个彩蛋——用Rich画ASCII艺术字:

from rich.ascii import DICE

console.print(DICE)  # 扔骰子效果

(快去试试,保证惊艳到同事!)如果你还没用过Rich,今天就是最好的入坑时机。记住——优雅的开发者连命令行都要精致!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐