用Rich打造炫酷命令行:让终端输出不再单调!
·
文章目录
(先问个扎心的问题)你在终端打印日志时是不是还在用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做了这些骚操作:
- 监控面板:用多个进度条+实时表格展示服务器状态
- CLI工具:带彩色帮助文档,参数错误时自动高亮提示
- 测试报告:失败用例用红色标记,通过率用进度条展示
(有个坑要注意!)在Docker环境中有时会出现颜色异常,解决办法是设置环境变量:
console = Console(force_terminal=True)
六、横向对比其他库
| 功能 | Rich | colorama | termcolor |
|---|---|---|---|
| 颜色支持 | ✅ | ✅ | ✅ |
| 表格 | ✅ | ❌ | ❌ |
| 进度条 | ✅ | ❌ | ❌ |
| Markdown | ✅ | ❌ | ❌ |
| 语法高亮 | ✅ | ❌ | ❌ |
(结论很明显了吧?)Rich简直就是终端美化的六边形战士!
七、写在最后
用了Rich之后最大的感受:命令行工具也可以做得很有"产品感"!虽然会让代码依赖增加(谁让它这么香呢),但对于需要用户交互的CLI工具来说,体验提升不是一点半点。
最后送大家一个彩蛋——用Rich画ASCII艺术字:
from rich.ascii import DICE
console.print(DICE) # 扔骰子效果
(快去试试,保证惊艳到同事!)如果你还没用过Rich,今天就是最好的入坑时机。记住——优雅的开发者连命令行都要精致!
更多推荐


所有评论(0)