7

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

 2 years ago
source link: https://developer.51cto.com/article/706878.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
一个 Python 美化库 - 让代码更炫酷更易读-51CTO.COM
一个 Python 美化库 - 让代码更炫酷更易读
作者:聆听世界的鱼 2022-04-19 09:18:56
在本文中,我们将了解一个名为 Rich 的强大 Python 库。一起来看看吧。

888184050876d42c628477da4cbab345ab3999.jpg

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

1208664730cf67589fc2416da00fd36d681373.jpg

Rich 的打印功能

想毫不费力地将 Rich 的输出功能添加到您的应用程序中,您只需导入rich 打印方法,该方法和其他 Python 的自带功能的参数类似。您可以试试:

>>> from rich import print
>>> print("Hello, [bold magenta]World,www.linuxmi.com[/bold magenta]!", ":vampire:", locals())

356da6c480c2f6ef83197050f956e2bfd389df.jpg

使用控制台

想要对 Rich 终端内容进行更多控制,请您导入并构造一个控制台对象。

>>> from rich.console import Console
>>> console = Console()

Console 对象含有一个print方法,它的界面与 python 内置的print功能界面相似。

您可以试试:

>>> console.print("Hello", "World!")
Hello World!
>>> console.print("Hello", "World! www.linuxmi.com")
Hello World! www.linuxmi.com

45a1231090581a2faf3817ccf621f298326e2d.jpg

您可能已经料到,这时终端上会显示“ Hello World!”。请注意,与内置的“打印”功能不同,Rich 会将文字自动换行以适合终端宽度。

有几种方法可以为输出添加颜色和样式。您可以通过添加style关键字参数来为整个输出设置样式。例子如下:

console.print("Hello", "World!", "www.linuxmi.com", style="bold red")

输出如下图:

c2a58ae2595a35cec7476241b23633726f6a1e.jpg

这个范例一次只设置了一行文字的样式。如果想获得更细腻更复杂的样式,Rich 可以渲染一个特殊的标记,其语法类似于bbcode。示例如下:

console.print("有志者[bold cyan] www.linuxmi.com [/bold cyan]事[u]竟[/u] 成 [i]Linux迷[/i]。")

d696b113514f5ca29bc8783768f98cbb7b3d67.jpg

将名称放在两个冒号之间即可在控制台输出中插入表情符号。示例如下:

>>> console.print(":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:")
😃 🧛 💩 👍 🦝

911a8086901985115a463807057f0ed212413d.jpg

请谨慎地使用此功能。

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)

该示例的输出如下:

21b740a040b67ca785473281e5f773403f62f6.jpg

请注意,控制台标记的呈现方式与print()和log()相同。实际上,由 Rich 渲染的任何内容都可以添加到标题/行(甚至其他表格)中。

Table类很聪明,可以调整列的大小以适合终端的可用宽度,并能根据需要环绕文本。

Rich 可以渲染多个不闪烁的进度条形图,以跟踪长时间运行的任务。

基本用法:用track函数调用任何程序并迭代结果。下面是一个例子:

from rich.progress import track
for step in track(range(100)):
    do_step(step)

添加多个进度条并不难。以下是从文档中获取的示例:

d14497e10a2fe718562212b0cc936ec870d11d.jpg

这些列可以配置为显示您所需的任何详细信息。内置列包括完成百分比,文件大小,文件速度和剩余时间。

要自己尝试一下,请参阅examples/downloader.py,它可以在显示进度的同时下载多个 URL。

您可以通过运行以下命令查看所有可能的格式设置:

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                                                                                 
⚡ python3 -m rich

输出将类似于:

b9d0bac950b561ce8e97290d828b34a98fe1dc.jpg


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK