现在基于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,可以帮忙讲我们的终端呈现出多彩多姿,当然这样的工具有很多。抛砖引玉,如果你也在使用类似的工具,请不吝回复介绍给大家。