Rich 是一个 Python 库,可以为您在终端中提供富文本和精美格式,用于将富文本(带有颜色和样式)写入终端。Rich API 可以很容易的在终端输出添加各种颜色和不同风格,它允许您显示高级内容,例如绘制漂亮的表格,进度条,markdown和语法高亮代码及回溯等等,不胜枚举——开箱即用。
那么,为什么这很有用?好吧,如果您不使用 Rich 之类的工具,那么您在终端上的代码输出可能会有点无聊且难以理解。如果你想让它更清晰、更漂亮,你可能想要使用 Rich——你来对地方了,学习如何做。
兼容性
Rich 适用于 Linux,OSX 和 Windows。真彩色/表情符号可与新的 Windows 终端一起使用,Windows 的经典终端仅限 8 种颜色。
Rich 还可以与Jupyter 笔记本一起使用,而无需其他配置。
安装说明
使用pip或其他 PyPI 软件包管理器进行安装。
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
⚡ pip install rich --user
- 1.
- 2.
Rich 的打印功能
想毫不费力地将 Rich 的输出功能添加到您的应用程序中,您只需导入rich 打印方法,该方法和其他 Python 的自带功能的参数类似。您可以试试:
>>> from rich import print
>>> print("Hello, [bold magenta]World,www.linuxmi.com[/bold magenta]!", ":vampire:", locals())
- 1.
- 2.
使用控制台
想要对 Rich 终端内容进行更多控制,请您导入并构造一个控制台对象。
>>> from rich.console import Console
>>> console = Console()
- 1.
- 2.
Console 对象含有一个print方法,它的界面与 python 内置的print功能界面相似。
您可以试试:
>>> console.print("Hello", "World!")
Hello World!
>>> console.print("Hello", "World! www.linuxmi.com")
Hello World! www.linuxmi.com
- 1.
- 2.
- 3.
- 4.
您可能已经料到,这时终端上会显示“ Hello World!”。请注意,与内置的“打印”功能不同,Rich 会将文字自动换行以适合终端宽度。
有几种方法可以为输出添加颜色和样式。您可以通过添加style关键字参数来为整个输出设置样式。例子如下:
console.print("Hello", "World!", "www.linuxmi.com", style="bold red")
- 1.
输出如下图:
这个范例一次只设置了一行文字的样式。如果想获得更细腻更复杂的样式,Rich 可以渲染一个特殊的标记,其语法类似于bbcode。示例如下:
console.print("有志者[bold cyan] www.linuxmi.com [/bold cyan]事[u]竟[/u] 成 [i]Linux迷[/i]。")
- 1.
表情符号
将名称放在两个冒号之间即可在控制台输出中插入表情符号。示例如下:
>>> console.print(":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:")
😃 🧛 💩 👍 🦝
- 1.
- 2.
请谨慎地使用此功能。
表格
Rich 可以使用 Unicode 框字符来呈现多变的表格。Rich 包含多种边框,样式,单元格对齐等格式设置的选项。下面是一个简单的示例:
from rich.console import Console
from rich.table import Column, Table
console = Console()
table = Table(show_header=True, header_style="bold magenta")
table.add_column("Date", style="dim", width=12)
table.add_column("Title")
table.add_column("Production Budget", justify="right")
table.add_column("Box Office", justify="right")
table.add_row(
"Dec 20, 2021", "Star Wars: The Rise of Skywalker", "$275,000,000", "$375,126,118"
)
table.add_row(
"May 25, 2022",
"[red]Solo[/red]: A Star Wars Story",
"$275,000,000",
"$393,151,347",
)
table.add_row(
"Dec 15, 2020",
"Star Wars Ep. VIII: The Last Jedi",
"$262,000,000",
"[bold]$1,332,539,889[/bold]",
)
console.print(table)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
该示例的输出如下:
请注意,控制台标记的呈现方式与print()和log()相同。实际上,由 Rich 渲染的任何内容都可以添加到标题/行(甚至其他表格)中。
Table类很聪明,可以调整列的大小以适合终端的可用宽度,并能根据需要环绕文本。
进度条
Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。
QQ">基本用法:用track函数调用任何程序并迭代结果。下面是一个例子:
from rich.progress import track
for step in track(range(100)):
do_step(step)
- 1.
- 2.
- 3.
添加多个进度条并不难。以下是从文档中获取的示例:
这些列可以配置为显示您所需的任何详细信息。内置列包括完成百分比,文件大小,文件速度和剩余时间。
要自己尝试一下,请参阅examples/downloader.py,它可以在显示进度的同时下载多个 URL。
您可以通过运行以下命令查看所有可能的格式设置:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
⚡ python3 -m rich
- 1.
- 2.
输出将类似于: