数据结构论坛

首页 » 分类 » 问答 » 终端高亮和色彩渲染Python工具R
TUhjnbcbe - 2025/1/21 16:21:00

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

概述

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

兼容性

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

Rich需要Python3.6.1或更高版本。

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

安装

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

python-mpipinstallrich

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

python-mrich

基本用法

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

fromrichimportprint

print("Hello,[boldmagenta]World[/boldmagenta]!",":vampire:",locals())

REPL

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

fromrichimportpretty

pretty.install()

Console

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

fromrich.consoleimportConsole

console=Console()

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

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

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

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

控制台。

print("Hello","World!",style="boldred")

输出类似于以下内容:

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

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

console.print("Wherethereisa[boldcyan]Will[/boldcyan]thereisaway.")

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

Inspect

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

my_list=["foo","bar"]

fromrichimportinspect

inspect(my_list,methods=True)

进阶

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

Log

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

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

表格

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

进度条

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

位置

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

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

python-mrich.spinner

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

python-mrich.tree

框格

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

MD文本

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

fromrich.consoleimportConsole

fromrich.markdownimportMarkdown

console=Console()

withopen("README.md")asreadme:

markdown=Markdown(readme.read())

console.print(markdown)

语法高亮

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

其渲染效果如下:

追溯

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

总结

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

1
查看完整版本: 终端高亮和色彩渲染Python工具R