深圳幻海软件技术有限公司 欢迎您!

一个 Python 美化库 - 让代码更炫酷更易读

2023-02-28

Rich是一个Python库,可以为您在终端中提供富文本和精美格式,用于将富文本(带有颜色和样式)写入终端。RichAPI可以很容易的在终端输出添加各种颜色和不同风格,它允许您显示高级内容,例如绘制漂亮的表格,进度条,markdown和语法高亮代码及回溯等等,不胜枚举——开箱即用。那么,为什么这很有

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.

输出将类似于: