打印

基本用法

from rich import print, print_json
print("[italic red]Hello[/italic red] World!", "aa")
print_json('{"a":"b","c":["d":"e"]}')

这种写法不能自定义太多内容,适用于简单场景。

稍复杂的写法

from rich.console import Console

console=Console(highlight=False)
print = console.print
print("已将[bold green]{:0>2}[/bold green]个节点设置为新的值[blue]{}[/blue]".format(count, value))

这样可以关闭rich库自带的高亮后再涂上自己的颜色。
注意:这样的话,这个print函数和其他的进度条、Table等就使用了不同的console对象,在与进度条等混合使用的时候打印顺序可能混乱。

把打印信息从控制台重定向到文件

from rich.console import Console

with open("report.txt", "wt") as report_file:
    console = Console(file=report_file)
    console.print("文件内容")

进度条

基本用法

from rich.progress import track
from time import sleep

for i in track(range(5), description="Processing..."):
    sleep(0.2)

嵌套进度条

from rich.progress import (
    track,
    Progress,
    TextColumn,
    BarColumn,
    TimeElapsedColumn,
    TimeRemainingColumn,
)
from time import sleep

with Progress(
    TextColumn("[progress.description]{task.description}"),
    BarColumn(),
    TextColumn("[progress.percentage]{task.percentage:>3.0f}%"),
    TimeRemainingColumn(),
    TimeElapsedColumn(),
) as progress:
    outer_bar = progress.add_task(description="outer progress", total=2)
    for i in range(2):
        inner_bar = progress.add_task(description="inner progress", total=10)
        for j in range(10):
            sleep(0.2)
            progress.advance(inner_bar, advance=1)
        progress.advance(outer_bar, advance=1)

Progress()方法可以设置transient=True,表示走完以后进度条就会消失

把logging日志和rich库进行结合

import logging
try:
    from rich.logging import RichHandler
    handler = RichHandler(show_path=False, show_time=False)
    logging.basicConfig(
        level=logging.INFO, handlers=[handler], format="%(message)s", force=True
    )
except ImportError:
    logging.basicConfig(level=logging.INFO, format="%(levelname)s\t %(message)s", force=True)

更多内容参考:官网说明