当前位置: 首页 > 科技观察

适用于Python开发人员的完美终端工具

时间:2023-03-19 19:27:44 科技观察

Rich是一个Python库,可在终端中为您提供丰富的文本和漂亮、精美的格式。使用RichAPI可以轻松地向终端输出添加各种颜色和样式。它可以绘制漂亮的表格、进度条、markdown、带有语法高亮和回溯的源代码等,优秀的功能列表不胜枚举。1.Rich兼容性Rich适用于Linux、OSX和Windows。可以与新的Windows终端一起使用,Windows的经典终端仅限于8种颜色。Rich也可以与JupyterNoteBook一起使用,无需额外配置。2.丰富的安装说明请选择以下任意一种方式输入命令安装依赖:Windows环境打开Cmd(开始-运行-CMD)。MacOS环境打开Terminal(command+空格进入Terminal)。如果你使用的是VSCode编辑器或者Pycharm,可以直接使用界面下方Terminal.pipinstallrich3.Rich的Print功能。想要方便的将Rich的输出函数添加到你的Python脚本程序中,只需要引入richprint方法即可,该方法与其他Python内置函数的参数类似。可以试试:fromrichimportprintprint("Hello,[boldmagenta]World[/boldmagenta]!",":vampire:",locals())可以看到基于richprint方法输出的内容是彩色的,重点是的,它与Python自带的print相比有明显的优势。4.自定义Console控制台输出要对Richterminal内容进行更多的自定义设置,需要导入并构造一个console对象:fromrich.consoleimportConsoleconsole=Console()Console对象包含一个print方法,其接口与Python内置的相同打印功能类似。您可以尝试:console.print("Hello","World!")如您所料,“HelloWorld!”此时将显示在终端上,请注意,与内置的“打印”功能不同,Rich会将文本换行以适合终端宽度。有几种方法可以将自定义颜色和样式添加到输出。您可以通过添加style关键字参数来设置整个输出的样式。例子如下:console.print("Hello","World!",style="boldred")输出如下图:本例一次只设置一行文字的样式。对于更精细和更复杂的样式,Rich可以使用类似于bbcode的语法呈现特殊标记。例子如下:console.print("Wherethereisa[boldcyan]Will[/boldcyan]there[u]is[/u]a[i]way[/i].")5.Console控制台记录Console对象有一个log()方法,它有一个类似于print()的接口,除了它还可以显示当前时间以及调用它的文件和行。默认情况下,Rich将为Python结构和repr字符串做语法高亮显示。如果您记录一个集合(如字典或列表),Rich将漂亮地打印它以适应可用空间。以下是其中一些函数的示例:fromrich.consoleimportConsoleconsole=Console()test_data=[{"jsonrpc":"2.0","method":"sum","params":[None,1,2,4,假,真],"id":"1",},{"jsonrpc":"2.0","method":"notify_hello","params":[7]},{"jsonrpc":"2.0",“方法”:“减法”,“参数”:[42,23],“id”:“2”},]deftest_log():enabled=Falsecontext={“foo”:“bar”,}电影=[”Deadpool","RiseoftheSkywalker"]console.log("Hellofrom",console,"!")console.log(test_data,log_locals=True)test_log()上面例子的输出如下:注意log_locals参数会输出一个表,该表包含调用日志方法的局部变量。log方法既可用于将长时间运行的应用程序(例如服务器)记录到终端,也可用于帮助调试。日志记录处理程序您还可以使用内置处理类来格式化和着色Python日志记录模块的输出。下面是一个示例输出:6.表情符号通过将名称放在两个冒号之间,在控制台输出中插入表情符号。示例:>>>console.print(":smiley::vampire::pile_of_poo::thumbs_up::raccoon:")😃🧛💩👍🦝请谨慎使用此功能。7.TableRich包含多种格式设置选项,例如边框、样式和单元格对齐方式。这是一个简单的例子:fromrich.consoleimportConsolefromrich.tableimportColumn,Tableconsole=Console()table=Table(show_header=True,header_style="boldmagenta")table.add_column("Date",style="dim",width=12)table.add_column("Title")table.add_column("ProductionBudget",justify="right")table.add_column("BoxOffice",justify="right")table.add_row("Dev20,2019","StarWars:TheRiseofSkywalker","$275,000,000","$375,126,118")table.add_row("May25,2018","[red]Solo[/red]:AStarWarsStory","$275,000,000","$393,151,347",)table.add_row("Dec15,2017","StarWarsEp.VIII:TheLastJedi","$262,000,000",[bold]$1,332,539,889[/bold]",)console.print(table)此示例的输出如下:请注意,控制台标记呈现在与print()相同的方式与log()相同。事实上,Rich呈现的任何内容都可以添加到标题/行(甚至其他表格)。Table类足够聪明,可以调整列的大小以适应终端的可用宽度,并根据需要进行文本换行。下面是同一个示例,在比上表小的终端上输出:8.ProgressBarRich可以呈现多个不闪烁的进度条以跟踪长时间运行的任务。基本用法:用track函数调用程序,迭代结果。下面是一个例子:fromrich.progressimporttrackforstepintrack(range(100)):do_step(step)添加多个进度条并不难。这是一个有效的示例:可以配置列以显示您想要的任何详细信息。内置列包括完成百分比、文件大小、文件速度和剩余时间。这是一个显示正在进行的下载的示例:它可以在显示进度的同时下载多个URL。自己动手试试看示例文件中的examples/downloader.py,在Python实用书公众号后台回复richexamples即可下载所有示例。9、按列输出数据Rich可以将内容以等宽或最佳宽度的列整齐排列呈现。这是(macOS/Linux)ls命令的一个非常基本的克隆,使用列显示目录列表:importosimportsysfromrichimportprintfromrich.columnsimportColumnsdirectory=os.listdir(sys.argv[1])print(Columns(directory))columns示例输出,此列显示从API中提取的数据:10.MarkdownRich可以呈现markdown,格式非常好以将其显示到终端。为了呈现降价,导入Markdown类,它将它打印到控制台。示例如下:fromrich.consoleimportConsolfromrich.markdownimportMarkdownconsole=Console()withopen("README.md")asreadme:markdown=Markdown(readme.read())console.print(markdown)本示例输出如下:11、语法高亮Rich使用pygments库进行语法高亮。用法类似于渲染降价。构造一个Syntax对象并将其打印到控制台。这是一个示例:fromrich.consoleimportConsolfromrich.syntaximportSyntaxmy_code='''defiter_first_last(values:Iterable[T])->Iterable[Tuple[bool,bool,T]]:"""Iterateandgenerateatuplewithaflagforfirstandlastvalue."""iter_values=iter(values)try:previous_value=next(iter_values)exceptStopIteration:returnfirst=Trueforvalueiniter_values:yieldfirst,False,previous_valuefirst=Falseprevious_value=valueyieldfirst,True,previous_value'''syntax=Syntax(my_code,"python",theme="monokai=,line_numbersTrue)console=Console()console.print(syntax)输出如下:12.错误回溯(traceback)Rich可以渲染漂亮的错误回溯日志,比标准的Pythontracebacks更易读,可以显示更多的代码。你可以设置Rich作为默认的回溯处理程序,因此所有异常都将由Rich为您呈现。这是它在OSX(类似于Linux)上的样子: