Rich API使向终端输出添加颜色和样式变得很容易。Rich还可以呈现漂亮的表格、进度条、标记、语法突出显示的源代码、回溯等等--开箱即用。
Rich适用于Linux、OSX和Windows。真彩色/表情符号适用于新的Windows终端,经典终端仅限8色。
要毫不费力地将丰富的输出添加到您的应用程序中,您可以导入丰富的Print方法,该方法与内置的Python函数具有相同的签名。试试这个:
Console对象有一个Print方法,该方法有意使用与内置打印函数类似的接口。下面是一个用法示例:
如您所料,这将把";Hello World!";打印到终端。请注意,与内置打印函数不同,Rich将对文本进行自动换行,以适应终端宽度。
有几种方法可以将颜色和样式添加到输出中。您可以通过添加style关键字参数来设置整个输出的样式。下面是一个例子:
对于一次设置一行文本的样式来说,这是很好的。为了获得更细粒度的样式,Rich呈现了一个在语法上类似于bbcode的特殊标记。下面是一个例子:
Console对象有一个log()方法,该方法具有与print()类似的接口,但还呈现当前时间的列以及进行调用的文件和行。默认情况下,Rich将对Python结构和REPR字符串进行语法高亮显示。如果您记录一个集合(例如,词典或列表),Rich会漂亮地打印它,以便它可以放在可用的空间中。以下是其中一些功能的示例。
从里奇那里。控制台导入控制台=console()test_data=[{";jsonrpc";:";2.0";,";方法";:";sum";,";params";:[None,1,2,4,false,True],";id";:";1";,},{";jsonrpc";:";2.0";,";方法";:";NOTIFY_HELLO";,";params";:[7]},{";jsonrpc";:";2.0";,";方法";:";减去";,";params";:[42,23],";id"。:";2";},]def test_log():enable=false context={";foo";:";bar";,}Movies=[";Deadpool";,";Rise of the Skywalker";]控制台。从";控制台、";!";控制台登录(";Hello from";,Console,";!";)控制台。log(test_data,log_locals=True)test_log()。
请注意LOG_LOCALS参数,它输出一个包含调用LOG方法的局部变量的表。
LOG方法可用于登录到终端,用于长时间运行的应用程序(如服务器),但也是一个非常好的调试辅助工具。
您还可以使用内置的Handler类来格式化来自Python的日志记录模块的输出,并对其进行着色。以下是输出的示例:
要在控制台输出中插入表情符号,请将名称放在两个冒号之间。下面是一个例子:
Rich可以使用Unicode方框字符呈现灵活的表格。边框、样式、单元格对齐等有多种格式选项。
从里奇那里。控制台从RICH导入控制台。表格导入列,表格控制台=控制台()表格=表格(SHOW_HEADER=True,HEADER_STYLE=";粗体洋红色";)表格。ADD_COLUMN(";DATE";,STYLE=";DIM";,WIDTH=12)表。添加_COLUMN(";标题";)表。添加_Column(";生产预算";,调整=";右";)表。添加_Column(";票房";,对齐=";右";)表。添加_ROW(";Dev 20,2019年&34;,";星球大战:天行者的崛起";,";$2.75亿";,";$375,126,118&34;)表。添加_ROW(";2018年5月25日&34;,";[red]独奏[/red]:星球大战故事";,";$2.75亿";,";$393,151,347";)表。添加_ROW(";2017年12月15日";,";星球大战EP。viii:“最后的绝地武士”,$2.62亿,$1,332,539,889,)游戏机。(注:最后的绝地武士,$262,000,000;,#34;,[BOLD]$1,332,539,889[/BOLD]";,)控制台。打印(表格)。
请注意,控制台标记在与print()和log()相同的WAS中呈现。事实上,Rich可以呈现的任何内容都可能包含在标题/行(甚至其他表)中。
Table类足够智能,可以调整列的大小以适应终端的可用宽度,并根据需要对文本进行换行。下面是相同的例子,端子做得比上表小:
对于基本用法,将任何序列包装在Track函数中并迭代结果。下面是一个例子:
添加多个进度条并不难。下面是从文档中摘录的一个例子:
这些列可以配置为显示您想要的任何详细信息。内置列包括完成百分比、文件大小、文件速度和剩余时间。下面是另一个示例,显示正在进行的下载:
要自己试用一下,请参见Examples/downloader.py,它可以在显示进度的同时同时下载多个URL。
Rich可以在等宽或最佳宽度的整齐列中呈现内容。下面是(MacOS/Linux)ls命令的一个非常基本的克隆,该命令按列显示目录列表:
下面的屏幕截图是Columns示例的输出,它以列的形式显示从API拉取的数据:
Rich可以呈现标记,并合理地将格式转换到终端。
要呈现Markdown,请导入Markdown类并使用包含Markdown代码的字符串构造它。然后将其打印到控制台。下面是一个例子:
从里奇那里。控制台从RICH导入控制台。Markdown导入Markdown Console=console(),打开(";readme.md";)为自述文件:markdown=Markdown(自述文件。Read())控制台。打印(降价)。
Rich使用pygments库实现语法突出显示。使用方法类似于呈现标记;构造一个语法对象并将其打印到控制台。下面是一个例子:
从里奇那里。控制台从RICH导入控制台。语法IMPORT语法MY_CODE=';';';def ITER_FIRST_LAST(值:Iterable[T])->;Iterable[Tuple[bool,bool,T]]:";";";迭代并生成带有第一个和最后一个值标志的元组。";";";ITER_VALUES=ITER(VALUES)TRY:PREVICE_VALUE=NEXT(ITER_VALUES)除StopIteration:对于ITER_VALUES中的值,Return First=True:Year First,False,Previous_Value First=False PERVAL_VALUE=Value First,True,Previous_Value';';';语法=语法(MY_CODE,";Python";,Theme=";monokai";,line_number=True。打印(语法)。
Rich可以呈现漂亮的回溯,这比标准的Python回溯更容易阅读和显示更多代码。您可以将Rich设置为默认的回溯处理程序,这样所有未捕获的异常都将由Rich呈现。