一、引言
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
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("这是第一块内容")
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