一、引言
rich是一个 Python 库,旨在创建丰富且美观的终端输出。它提供了多种功能,如彩色文本、表格、进度条、树形视图等,让终端界面变得更加生动和直观。
二、安装
你可以使用 pip 安装rich库:
pip install rich
三、基本用法
需要在terminal中执行,如python xx.py
1. 彩色文本
使用rich.print可以轻松打印彩色文本。例如:
from rich import print
print("[bold red]这是红色加粗文本[/]")
print("[green]这是绿色文本[/]")
2. 表格
rich提供了创建和显示表格的功能:
from rich.table import Table
table = Table(title="示例表格")
table.add_column("姓名", justify="left")
table.add_column("年龄", justify="right")
table.add_row("张三", "[yellow]25")
table.add_row("李四", "[red]30")
print(table)
3. 进度条
rich可以方便地显示进度条:
from rich.progress import Progress
import time
with Progress() as progress:
task = progress.add_task("任务进度", total=100)
for i in range(101):
time.sleep(0.1) # 模拟耗时操作
progress.update(task, advance=1)
4. 盒子和面板
使用rich.panel可以创建面板:
from rich.panel import Panel
panel = Panel("这是一个面板", title="面板标题")
print(panel)
5. 高亮文本
rich支持文本高亮功能:
from rich.console import Console
from rich.highlighter import RegexHighlighter
from rich.theme import Theme
class EmailHighlighter(RegexHighlighter):
"""正则匹配高亮邮箱名称"""
base_style = "example."
highlights = [r"(?P<email>[\w-]+@([\w-]+\.)+[\w-]+)"]
theme = Theme({"example.email": "bold magenta"})
console = Console(highlighter=EmailHighlighter(), theme=theme)
console.print("Send funds to money@example.org")
6. 树形视图
rich提供了创建树形视图的功能:
from rich.tree import Tree
tree = Tree("根节点")
child1 = tree.add("子节点 1")
tree.add("子节点 2")
child1.add("[red]孙节点 1")
child1.add("孙节点 2")
print(tree)
7. Markdown渲染
rich支持Markdown格式的文本渲染,允许你在终端中显示格式化的文本。
from rich import print
from rich.markdown import Markdown
markdown_text = """
# 标题
- 列表项 1
- 列表项 2
> 引用内容
**加粗文本**
* 斜体文本*
"""
m = Markdown(markdown_text)
print(m)
8. 动态更新
rich支持在终端中动态更新内容,而不需要清除整个屏幕或重新打印所有内容。
from rich.console import Console
from rich.live import Live
from time import sleep
with Live(console=Console(), refresh_per_second=2) as live:
for i in range(10):
live.update(f"进度: {i * 10}%")
sleep(1)
9. 控制台交互
rich提供了一些交互式组件,如输入框、选择框等,用于在控制台中与用户进行交互。
from rich.prompt import Prompt
name = Prompt.ask("请输入你的名字:")
print(f"你好,{name}!")
10. 自定义布局
rich允许你使用容器和布局来创建复杂的终端界面。
from rich.console import Console
from rich.layout import Layout
from rich.panel import Panel
from rich.text import Text
console = Console()
text1 = Text("这是第一块内容")
text2 = Text("这是第二块内容")
layout = Layout(name="my_layout")
layout.split_row(
Layout(Panel(text1, title="面板1")),
Layout(Panel(text2, title="面板2")),
)
console.print(layout)
11. 自定义样式
rich允许你自定义文本、表格、进度条等组件的样式。
from rich.console import Console
from rich.style import Style
console = Console()
custom_style = Style(color="blue", blink=True, bold=True)
console.print("[custom]自定义样式文本[/custom]", style=custom_style)
12. 异步输出
rich支持异步输出,这对于在长时间运行的程序中更新终端界面非常有用。
import asyncio
from rich.progress import track
async def long_running_task():
for i in track(range(100), description="任务进度"):
await asyncio.sleep(0.1)
asyncio.run(long_running_task())
官方文档地址:https://rich.readthedocs.io/en/stable/introduction.html
四、总结
rich库为 Python 提供了丰富的终端输出功能,包括彩色文本、表格、进度条、盒子、面板、高亮文本和树形视图等。通过使用rich,你可以创建出美观且易于阅读的终端界面。更多高级功能和用法可以通过查阅官方文档和示例来进一步了解和学习。
领取专属 10元无门槛券
私享最新 技术干货