Rich:一个用于在Python控制台中生成美观和丰富输出的库

Rich

概述

Rich库为Python提供了丰富的控制台输出功能,支持打印文本、文本格式化、面板、进度条、树形结构和实时更新等多种使用场景。通过这些功能,可以创建更加美观和交互性强的控制台应用程序。

安装

首先需要安装rich库:

pip install rich

如果打算将Rich与Jupyter一起使用,那么需要执行以下命令安装一些额外的依赖项:

pip install "rich[jupyter]"

示例用法

Rich提供了丰富的操作文档,更多用法请参阅:Rich文档

打印文本

启动并运行Rich的最快方法是导入替代print函数,该函数采用与内置函数相同的参数print,可以用作直接替换

使用print函数可以打印带有格式的文本。

from rich import print

print("[bold magenta]Hello[/bold magenta] World!")

样式说明:

[bold magenta]:这部分指定了文本的样式

bold 表示加粗。

magenta 表示文本颜色为品红色

Hello:这是被格式化的文本,应用了上面的样式。

[/bold magenta]:这是样式的结束标记,表示接下来的文本不再使用 bold 和 magenta 样式

输出 :
在这里插入图片描述

Console

为了完全控制终端格式,Rich提供了一个Console类。大多数应用程序都需要一个控制台实例,因此可能希望在模块级别创建一个,或将其作为顶级对象的属性。

例如:1.可以将一个名为“console.py”的文件添加到项目中

from rich.console import Console
console = Console()

2.然后可以从项目的任何位置导入控制台

from my_project.console import console

使用示例:

from rich.console import Console

# 创建 Console 实例
console = Console()

# 打印当前的局部变量 内容可能较多
# console.print(locals())

# 其他打印
console.print([1, 2, 3])
console.print("[blue underline]Looks like a link")
console.print("FOO", style="white on blue")

# 对齐
style = "bold white on magenta"
console.print("Rich", style=style)
console.print("Rich", style=style, justify="left")
console.print("Rich", style=style, justify="center")
console.print("Rich", style=style, justify="right")

# 控制台有一个style属性,可以使用它来将样式应用于打印的所有内容
from rich.console import Console
blue_console = Console(style="white on blue")
blue_console.print("I'm blue. Da ba dee da ba di.")

# 日志记录
console.log("Hello, World!")

# 打印JSON
console.print_json('[false, true, null, "foo"]')

输出:
在这里插入图片描述

文本格式化

使用 Text 类可以创建带有样式的文本,例如加粗、颜色、背景等。

创建一个红色加粗文本并在黄色背景上显示。

from rich.console import Console
from rich.text import Text

# 创建 Console 实例
console = Console()

# 文本格式化
text = Text("这是一个文本示例", style="bold red on yellow")
console.print(text)

输出:
在这里插入图片描述

面板

使用 Panel 类可以创建带有边框和标题的面板,适合展示信息或分隔内容。

from rich.console import Console
from rich.panel import Panel

# 创建 Console 实例
console = Console()

# 面板
panel = Panel("这是一个面板示例", title="面板标题", border_style="blue")
console.print(panel)

输出:
在这里插入图片描述

树形结构

使用 Tree 类可以创建层级结构的展示,适合展示目录、分类等。

创建一个简单的树形结构

from rich.console import Console
from rich.tree import Tree

# 创建 Console 实例
console = Console()

# 创建树形结构
tree = Tree("根节点")
subtree = tree.add("子节点 1")
subtree.add("子节点 1.1")
subtree.add("子节点 1.2")
tree.add("子节点 2")

# 打印树形结构
console.print(tree)

输出:
在这里插入图片描述

使用进度条

使用rich库中的Progress类来创建一个进度条,支持动态更新

注意:在Jupyter中使用,需要额外安装:pip install ipywidgets

# 从 rich.progress 模块导入了 Progress 类,用于创建和管理进度条
from rich.progress import Progress
import time

# 创建一个上下文管理器,确保在代码块结束时自动清理进度条。
with Progress() as progress:
    # 添加一个新的任务到进度条
    # "[cyan]Processing..." 是任务的描述,使用了 cyan(青色)样式。
    # total=100 指定了任务的总进度(100%)
    task = progress.add_task("[cyan]Processing...", total=100)
    # while 循环会持续运行,直到 progress.finished 为 True,即所有任务完成
    while not progress.finished:
        # 更新任务的进度
        # 表示将任务的进度增加 1(每次循环增加 1%)
        progress.update(task, advance=1)
        # 模拟任务执行时间
        time.sleep(0.1) 

输出:
在这里插入图片描述

实时更新

使用 Live 类可以在控制台中实时更新内容,适合展示动态变化的信息。

模拟处理任务并实时更新显示内容

from rich.console import Console
from rich.live import Live

# 创建 Console 实例
console = Console()

# 实时更新
with Live(console=console) as live:
    for i in range(10):
        live.update(f"正在处理第 {i + 1} 个任务...")
        time.sleep(0.5)  # 模拟处理时间

输出 :
在这里插入图片描述

使用表格

使用rich库中的Console和Table类来创建并显示一个格式化的表格。

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

console = Console()
table = Table(title="示例表格")

table.add_column("姓名", justify="left", style="cyan", no_wrap=True)
table.add_column("年龄", justify="right", style="magenta")
table.add_column("城市", justify="right", style="green")

table.add_row("Alice", "24", "New York")
table.add_row("Bob", "30", "Los Angeles")
table.add_row("Charlie", "29", "Chicago")

console.print(table)

输出:
在这里插入图片描述

使用Markdown

使用rich库中的Markdown类来渲染Markdown格式的文本。

#  导入 Markdown 类,用于解析和渲染 Markdown 格式的文本
from rich.markdown import Markdown
# 导入 Console 类,用于输出到控制台。
from rich.console import Console

# 创建一个 Console 实例,用于打印内容
console = Console()

# 创建一个 Markdown 实例,传入 Markdown 格式的字符串。
markdown_text = """
# 欢迎使用 Rich 库

这是一个 **Rich** 示例,展示了如何在控制台中使用 Markdown。

## 列表

- 项目 1
- 项目 2
- 项目 3

## 链接

访问 [Rich 文档](https://rich.readthedocs.io/en/stable/) 了解更多信息。

## 代码块

```python
print("Hello, World!")
"""

markdown = Markdown(markdown_text)
# 使用 console.print() 方法将渲染后的 Markdown 输出到控制台。
console.print(markdown)

输出:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeDevMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值