程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Github高星终端高亮和色彩渲染库——Rich

hfteth 2025-03-20 15:06:19 技术文章 17 ℃

终端高亮和色彩渲染库——Rich

现在基于Python来做一些运维工具是一个很常见的选择,尤其开发一些终端小工具。为了改变终端黑白两色的世界,需要给你的小工具做一些色彩和高亮的渲染。虫虫今天就给大家介绍一个用于终端色彩渲染的Python库Rich,和名字暗示的一样,该库可以用来渲染终端色彩,以呈现丰富的文本和漂亮的格式。

概述

Rich提供API可以很容易地为终端输出添加颜色和样式。 Rich支持渲染漂表格、进度条、markdown、语法突出显示的源代码、回溯等等,并且开箱即用。

兼容性

Rich可以跨平台使用,可用于Linux、OSX以及Windows。真彩/表情符号适用于新的Windows 终端,经典终端仅限于16种颜色。

Rich需要Python 3.6.1或更高版本。

Rich可Jupyter Notebook 配合使用而无需额外配置。

安装

可以使用pip或者PyPI包管理器安装Rich:

python -m pip install rich

安装成功后,可以使用以下命令在终端上测试Rich输出:

python -m rich

基本用法

为了要轻松地将rich添加到的应用程序,使用以导入rich的print方法,该方法与内置Python函数具有相同的签名。

from rich import print
print ( "Hello, [bold magenta]World[/bold magenta]!" , ":vampire:" , locals ())

REPL

Rich可以安装在Python REPL中,这样任何数据结构都可以被渲染高亮彩色打印和突出显示。

>>> from rich import pretty
>>> pretty.install()

Console

要更好地控制终端内容,需要导入并构造一个Consol对象。

from rich.console import Console
console = Console()

Console对象有一个和内置函数print有相似的接口的方法:

console.print("Hello", "World!")

该语句将打印 "Hello World!"到终端。请注意,与内置print功能,Rich将自动换行以适应终端宽度。

有几种方法可以为输出添加颜色和样式。比如可以通过添加style关键字参数:

控制台 。

print ( "Hello" , "World!" , style = "bold red" )

输出类似于以下内容:

这对于一次设置一行文本的渲染,用style样式就很好。

为了更细粒度的样式,Rich 呈现了一个特殊的标记,它的语法类似于bbcode ,举例如下:

console.print("Where there is a [bold cyan]Will[/bold cyan] there [u]is[/u] a [i]way[/i].")

可以使用Console对象以最小的努力生成复杂的输出。

Inspect

Rich 有一个Inspect函数,它可以生成任何 Python 对象的报告,例如类、实例或内置对象的渲染。

>>> my_list = ["foo", "bar"]
>>> from rich import inspect
>>> inspect(my_list, methods=True)

进阶

Rich包含许多可渲染对象可用于在 终端中创建优雅输出并帮助调试代码。

Log

Console 对象有一个log()具有类似print()接口的方法,但也会呈现当前时间的列以及进行调用的文件和行。默认情况下,Rich 将为 Python 结构和 repr 字符串进行语法突出显示。 如果记录一个集合(即一个字典或一个列表),Rich 会漂亮地打印它,以便它适合可用空间。

还可以使用内置的Handler类 对Python日志记录模块的输出进行格式化和着色。

表格

为灵活呈现表格,可以使用unicode、框字符、边框、样式、单元格对齐等有多种格式选项。

进度条

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

位置

对于难以计算进度的情况,可以使用status方法,该方法将显示“微调器”动画和消息。动画不会阻止正常使用控制台。

对cli-spinners,可以通过指定spinner范围。运行以下命令以查看可用值,呈现出动态效果图:

python -m rich.spinner

Rich可以树的方式用引导线,显示文件结构或任何其他分层数据。

python -m rich.tree

框格

Rich 可以将内容呈现在Columns具有相同或最佳宽度,下面是(MacOS / Linux)的一个非常基本的克隆ls在列中显示目录列表的命令:

MD文本

Rich可以渲染markdown并合理地将格式转换到终端。

from rich.console import Console
from rich.markdown import Markdown
console = Console()
with open("README.md") as readme:
markdown = Markdown(readme.read())
console.print(markdown)

语法高亮

Rich 使用 pygments 库来实现语法高亮。用法类似于渲染markdown; 构建一个Syntax对象并将其打印到控制台。

其渲染效果如下:

追溯

Rich可以渲染回溯,它比标准的Python回溯更易于阅读并显示更多代码。可以将Rich设置为默认的回溯处理程序,这样所有未捕获的异常都将由Rich呈现。

总结

本文中我们介绍一个Python下终端渲染工具Rich,可以帮忙讲我们的终端呈现出多彩多姿,当然这样的工具有很多。抛砖引玉,如果你也在使用类似的工具,请不吝回复介绍给大家。

Tags:

最近发表
标签列表