一個 Python 美化庫 - 讓代碼更炫酷更易讀
Rich 是一個 Python 庫,可以為您在終端中提供富文本和精美格式,用于將富文本(帶有顏色和樣式)寫入終端。Rich API 可以很容易的在終端輸出添加各種顏色和不同風(fēng)格,它允許您顯示高級內(nèi)容,例如繪制漂亮的表格,進(jìn)度條,markdown和語法高亮代碼及回溯等等,不勝枚舉——開箱即用。
那么,為什么這很有用?好吧,如果您不使用 Rich 之類的工具,那么您在終端上的代碼輸出可能會有點(diǎn)無聊且難以理解。如果你想讓它更清晰、更漂亮,你可能想要使用 Rich——你來對地方了,學(xué)習(xí)如何做。
兼容性
Rich 適用于 Linux,OSX 和 Windows。真彩色/表情符號可與新的 Windows 終端一起使用,Windows 的經(jīng)典終端僅限 8 種顏色。
Rich 還可以與Jupyter 筆記本一起使用,而無需其他配置。
安裝說明
使用pip或其他 PyPI 軟件包管理器進(jìn)行安裝。
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? pip install rich --user
Rich 的打印功能
想毫不費(fèi)力地將 Rich 的輸出功能添加到您的應(yīng)用程序中,您只需導(dǎo)入rich 打印方法,該方法和其他 Python 的自帶功能的參數(shù)類似。您可以試試:
>>> from rich import print
>>> print("Hello, [bold magenta]World,www.linuxmi.com[/bold magenta]!", ":vampire:", locals())
使用控制臺
想要對 Rich 終端內(nèi)容進(jìn)行更多控制,請您導(dǎo)入并構(gòu)造一個控制臺對象。
>>> from rich.console import Console
>>> console = Console()
Console 對象含有一個print方法,它的界面與 python 內(nèi)置的print功能界面相似。
您可以試試:
>>> console.print("Hello", "World!")
Hello World!
>>> console.print("Hello", "World! www.linuxmi.com")
Hello World! www.linuxmi.com
您可能已經(jīng)料到,這時終端上會顯示“ Hello World!”。請注意,與內(nèi)置的“打印”功能不同,Rich 會將文字自動換行以適合終端寬度。
有幾種方法可以為輸出添加顏色和樣式。您可以通過添加style關(guān)鍵字參數(shù)來為整個輸出設(shè)置樣式。例子如下:
console.print("Hello", "World!", "www.linuxmi.com", style="bold red")
輸出如下圖:
這個范例一次只設(shè)置了一行文字的樣式。如果想獲得更細(xì)膩更復(fù)雜的樣式,Rich 可以渲染一個特殊的標(biāo)記,其語法類似于bbcode。示例如下:
console.print("有志者[bold cyan] www.linuxmi.com [/bold cyan]事[u]竟[/u] 成 [i]Linux迷[/i]。")
表情符號
將名稱放在兩個冒號之間即可在控制臺輸出中插入表情符號。示例如下:
>>> console.print(":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:")
?? ?? ?? ?? ??
請謹(jǐn)慎地使用此功能。
表格
Rich 可以使用 Unicode 框字符來呈現(xiàn)多變的表格。Rich 包含多種邊框,樣式,單元格對齊等格式設(shè)置的選項。下面是一個簡單的示例:
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)
該示例的輸出如下:
請注意,控制臺標(biāo)記的呈現(xiàn)方式與print()和log()相同。實(shí)際上,由 Rich 渲染的任何內(nèi)容都可以添加到標(biāo)題/行(甚至其他表格)中。
Table類很聰明,可以調(diào)整列的大小以適合終端的可用寬度,并能根據(jù)需要環(huán)繞文本。
進(jìn)度條
Rich 可以渲染多個不閃爍的進(jìn)度條形圖,以跟蹤長時間運(yùn)行的任務(wù)。
基本用法:用track函數(shù)調(diào)用任何程序并迭代結(jié)果。下面是一個例子:
from rich.progress import track
for step in track(range(100)):
do_step(step)
添加多個進(jìn)度條并不難。以下是從文檔中獲取的示例:
這些列可以配置為顯示您所需的任何詳細(xì)信息。內(nèi)置列包括完成百分比,文件大小,文件速度和剩余時間。
要自己嘗試一下,請參閱examples/downloader.py,它可以在顯示進(jìn)度的同時下載多個 URL。
您可以通過運(yùn)行以下命令查看所有可能的格式設(shè)置:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? python3 -m rich
輸出將類似于: