打印
基本用法
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)
更多内容参考:官网说明