一、引言

rich是一个Python库,旨在创建丰富且美观的终端输出。它提供了多种功能,如彩色文本、表格、进度条、树形视图等,让终端界面变得更加生动和直观。

二、安装

你可以使用pip安装rich库:

```

pip install rich

```

三、基本用法

需要在terminal中执行,如python xx.py

1. 彩色文本

使用rich.print可以轻松打印彩色文本。例如:

```python

from rich import print

print("[bold red]这是红色加粗文本[/]")

print("[green]这是绿色文本[/]")

```

2. 表格

rich提供了创建和显示表格的功能:

```python

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可以方便地显示进度条:

```python

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可以创建面板:

```python

from rich.panel import Panel

panel = Panel("这是一个面板", title="面板标题")

print(panel)

```

5. 高亮文本

rich支持文本高亮功能:

```pythonfrom rich.console import Console

from rich.highlighter import RegexHighlighter

from rich.theme import Theme

class EmailHighlighter(RegexHighlighter):

"""正则匹配高亮邮箱名称"""

base_style = "example."

highlights = [r"(?P[\w-]+@([\w-]+\.)+[\w-]+)"]

theme = Theme({"example.email": "bold magenta"})

console = Console(highlighter=EmailHighlighter(), theme=theme)

console.print("Send funds to money@example.org")

# 6. 树形视图

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渲染

from rich import print

from rich.markdown import Markdown

markdown_text = """

# 标题

- 列表项 1

- 列表项 2

> 引用内容

**加粗文本**

* 斜体文本*

"""

m = Markdown(markdown_text)

print(m)

# 8. 动态更新

```

以下是根据您提供的内容重构的代码:

1. 控制台输出进度条

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)

2. 控制台交互

from rich.prompt import Prompt

name = Prompt.ask("请输入你的名字:")

print(f"你好,{name}!")

3. 自定义布局

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)

4. 自定义样式

from rich.console import Console

from rich.style import Style

console = Console()

custom_style = Style(color="blue", blink=True, bold=True)

## 四、rich库高级用法

### 1、自定义样式文本

使用`console.print()`方法可以打印带有自定义样式的文本。以下是一个示例,其中`custom_style`是自定义样式的名称:

```python

console.print("[custom]自定义样式文本[/custom]", style=custom_style)

```

### 2、异步输出

rich库支持异步输出,这对于在长时间运行的程序中更新终端界面非常有用。以下是一个示例代码:

```python

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())

```

该示例代码中,使用`track()`函数创建一个进度条对象,并在循环中逐渐更新进度条,模拟一个长时间运行的任务。通过调用异步函数和`asyncio.run()`方法,可以在后台线程中执行该任务。

更多关于rich库的使用和功能,请参考官方文档:https://rich.readthedocs.io/en/stable/introduction.html