文章目录

  • 前言
  • 一、Rich是什么?
  • 二、安装与导入Rich
    • 1.Rich安装
    • 2.导入rich库(快速使用打印功能)
  • 三、Console类的使用
    • 1、官方推荐的构造与导入方式
    • 2、Console的构造方法
    • 3、Console的常用方法
      • >使用console.print()来进行基础打印
      • >使用console.rule()来打印带标题的分隔线
      • >使用console.log()来打印日志
      • >console.out()低级打印
      • >console.input()输入
      • >文本对齐
      • >console.status()状态显示
    • 4、Console小结与文字样式简介
      • >style的颜色关键字的使用
      • >style的样式关键字的使用
  • 四、Rich的其他功能
    • 1、进度条生成
      • >使用rich.progress.track()自动生成并刷新进度条
      • >使用rich.progress.Progress的实例来手动刷新多条进度
    • 2、面板
    • 3、表单
    • 4、实时显示
  • 五、自己写的文档

前言

最近发现了一款非常强大的python第三方库——Rich
这款库主要用于终端打印


一、Rich是什么?

Rich是一个Python库,用于将丰富的文本(带有颜色和样式)写入终端,并用于显示高级内容,例如表格。
使用Rich使您的命令行应用程序更具视觉吸引力,并以更具可读性的方式呈现数据。Rich还可以通过漂亮的打印和语法突出显示数据结构来作为有用的调试辅助工具。
<官方文档>


二、安装与导入Rich

1.Rich安装

直接pip就好了

pip install Rich

2.导入rich库(快速使用打印功能)

代码如下(示例):

from rich import print as rprint
rprint(locals())

以上代码将rich库的基础打印函数导入,并使用其打印了一个字典

与print()函数具有类似作用的还有log()和rule()函数,但是我们在这一节不去详细介绍它们,因为直接导入函数再进行使用并不是官方推荐的用法。
以上面的例子为例,其理想打印结果应该是

这是因为前者是在pycharm中打印的,后者是在windows Powershell,前者的终端不支持默认颜色空间,所以打印出来的内容没有颜色。


三、Console类的使用

为了完全控制终端格式,Rich提供了一个Console类。
在下文中,‘可打印的’,‘可渲染的’皆指Console实例可以打印的对象


1、官方推荐的构造与导入方式

大多数应用程序将需要一个Console实例,因此您可能需要将其当做模块级别或作为顶级对象来创建。例如,您可以在项目中添加一个名为“ rich_console.py”的文件:

from rich.console import Console
console = Console()

然后,您可以从项目的任何位置导入控制台,如下所示:

from rich_console import console

2、Console的构造方法

在构建Console对象时,你可以选择以下参数:

可选参数 含义
size 是终端的当前尺寸(尽量不要手动设置它,因为它是自动的)
encoding 编码方式
color_system 颜色空间
file 当你设置了这个参数,Console的打印将被重定向到指定文件

可选的颜色空间:


3、Console的常用方法

使用方法:
在此之前,让我们先来创建一个实例console

console = Console(color_system='256', style=None)

>使用console.print()来进行基础打印

使用方法:

console.print([1, 2, 3])
console.print("[blue underline]Looks like a link")
console.print(locals())
console.print("FOO", style="white on blue")

打印的结果:

[style]中的参数和style参数的功能相同,他们的具体格式我会在下面给出


>使用console.rule()来打印带标题的分隔线

官方描述:绘制一条带有可选标题的水平线,这是将终端输出分成多个部分的好方法。
使用方法:

console.rule("[bold red]Chapter 2")
console.rule("[bold red]Chapter 2", align='left')

打印的结果如下:

你可以设置align参数来设置标题的对齐,默认为 ‘center’


>使用console.log()来打印日志

使用方法:

console.log('hello world')

打印结果:


>console.out()低级打印

它类似于python的源生print(),不能格式化打印高级数据类型


>console.input()输入

这个我没有详细看,有兴趣的可以翻阅官方文档


>文本对齐

print(), log()方法支持justify参数,如果你设置了这个参数,
其必须为:“default”, “left”, “right”, “center”, “full”,它可以设置打印的文本使其对齐

style = 'bold white on blue'
console.print('Rich', style=style)
console.print('Rich', style=style, justify='left')
console.print('Rich', style=style, justify='center')
console.print('Rich', style=style, justify='right')


>console.status()状态显示

这个方法将返回一个上下文管理器,
该上下文管理器将使用动画显示代码块的运行状态。
你可以在控制台输入以下命令来观赏其功能:

python -m rich.status

使用方法:

with console.status("[red]Working...[/]"):for i in range(10):time.sleep(0.2)

运行结果:

在运行with包围的代码时,控制台会为其显示一个动画
你可以设置spinner参数来设置显示的动画
使用以下命令来观看所有可选的spinner

python -m rich.spinner

4、Console小结与文字样式简介

除了在字符串中使用 [style] str [/] 来标记要渲染的字符串的样式之外,你还可以使用style参数来设置其样式 ,它们是完全等价的
例如:

console.print('[magenta]Hello[/]')

等价于:

console.print('Hello', style='magenta')

>style的颜色关键字的使用

八位颜色:

 style='color(n)' # 0<=n<=255

十六进制颜色与RGB颜色,这需要你的console的颜色空间支持:

style='#af00ff'
style='rgb(175,0,255)'

你还可以在style的颜色关键字前加上on来设置背景颜色,例如:

style='red on white'

这将生成红字白底的文本

>style的样式关键字的使用


您可以通过添加以下一个或多个单词来设置样式属性:

关键字 含义
‘bold’或’b’ 粗体字
‘blink’ 用于闪烁的文本(请谨慎使用)
‘blink2’ 用于快速闪烁的文本(大多数终端不支持)
‘conceal’ 用于隐藏的文本(大多数终端不支持)
‘italic’或’i’ 斜体文本(Windows不支持)
‘reverse’或’r’ 用于前景和背景颜色反转的文本
‘strike’或’s’ 带有删除线的文字
‘underline’或’u’ 带下划线的文字

!!你可以将所有样式混用!! 例如:

style='blink bold red underline on white'

你同样可以生成Style对象来代替style字符串,详细请见官方文档


四、Rich的其他功能

除了打印功能外,Rich也具有很多其他强大的功能,例如生成面板和表单,生成进度条等


1、进度条生成

>使用rich.progress.track()自动生成并刷新进度条

该函数可以简单快速地生成一个进度条,只需要你在原本的迭代器上做很小的改动
使用方法:

from rich.progress import track
for i in track(range(10), description='Processing...'):time.sleep(1)

运行结果:


它非常的简单易用,只需要在你原本的迭代器上套一层track()就能使用!!


>使用rich.progress.Progress的实例来手动刷新多条进度

使用方法:

from rich.progress import Progress
with Progress() as progress:task1 = progress.add_task('[red]Downloading...', total=1000)task2 = progress.add_task('[green]Processing...', total=1000)task3 = progress.add_task('[cyan]Cooking...', total=1000)while not progress.finished:progress.update(task1, advance=5)progress.update(task2, advance=3)progress.update(task3, advance=9)time.sleep(0.02)

使用progress.add_task()方法来手动创建一根进度条,并使用progress.update()方法来更新它,
total意指该进度条的总长度,advance意指进度条的增长长度


2、面板

rich.panel.Panel的实例为一个被线条包围的可渲染对象
使用方法:

from rich.panel import Panel \nconsole.print(Panel('[blue]This is a panel[/]'))

运行结果

你可以通过box参数来设置面板线条的类型


3、表单

rich.table.Table()的实例为一个具有行和列的可渲染对象
使用方法:

from rich.table import Table
table = Table()
table.add_column('[red]test')
table.add_column('[red]test2')
table.add_row('[red]this is a table', '[yellow]this is a table')
table.add_row('[red]hello', '[yellow]world')
console.print(table)

运行结果


类似于面板,表单同样可以设置box参数来改变它的线条类型


4、实时显示

rich.live.Live的实例用于连续刷新显示一个可渲染对象,例如,你向Table对象中写入的新的行,你不需要再次打印它,它的内容将实时显示在终端上。
注意:Live的实例内部将自动创建一个console对象,你也可以在构造Live实例时传入它

from rich.live import Live
from rich.table import Table
table = Table()
table.add_column('test')
with Live(table, refresh_per_second=4) as live:for row in range(12):time.sleep(0.4)table.add_row('yes')live.console.log('log')

运行结果:


五、自己写的文档

我自己整理了一下文档,并写好了py文件名为rich_console.py

直接导入就能用了!鼠标放上去就能看见所有的使用方法,再也不怕记不住了!

并且写好了一个配套的测试文件test.py

https://download.csdn.net/download/qq_43954124/14752622 <在这里下载

python之Rich库使用入门(打印彩色字体,表单,进度条与状态动画,高级数据类型)相关推荐

  1. windows下运行python打印有颜色的字_在windows下Python打印彩色字体的方法

    本文讲述了Python在windows下打印彩色字体的方法.分享给大家供大家参考,具体如下: ##################################################### ...

  2. python嵌套html开发gui_python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例...

    PyQt5布局控件QFormLayout简介 QFormLayout是label-field式的表单布局,顾明思议,就是实现表单方式的布局,表单是提示用户进行交互的一种模式,主要有两列组成,第一列用于 ...

  3. c++技巧——Printf 打印彩色字体

    Printf 打印彩色字体 在printf函数的控制字符中,使用如下格式进行打印:\033[attr1;attr2;attrnm+字符串,具体可以以下示例 其中attr分别表示各种属性对应的数字,用分 ...

  4. html打印进度条不显示,LODOP打印URL显示和隐藏进度条

    不建议使用ADD_PRINT_URL: 由于Lodop借用IE下载引擎,与非IE浏览器之间目前不能传递Session(Cookies),所以需要安全验证的页面不要用URL方式打印,要用页面已经下载好的 ...

  5. 专注于 web报表, web打印, 自定义web表单, web工作流管理系统 方面的技术

    专注于 web报表, web打印, 自定义web表单, web工作流管理系统 方面的技术, 官方网站为:  http://www.fcsoft.com.cn/

  6. Python打印彩色字体

    Python在终端输出时,可以输出不同字体色/背景色/前景色. 打印带有字体颜色的格式为\033[显示方式;前景色;背景色m + 结尾部分:\033[0m 即便知道如此格式,很多人也烦恼于正常使用,因 ...

  7. shell 下使用 echo 打印彩色字体及彩色背景

    对于shell中的终端打印感觉很好玩! 首先知道shell中终端打印有echo printf一般常用的就是echo咯: 注:字体颜色 重置=0,黑色=30,红色=31,绿色=32, ×××=33,蓝色 ...

  8. Shell打印彩色字体

    要打印彩色文本,可输入如下命令: # echo -e "\e[1;36m \e[0m" 上述代码表示: \e[1;36 将颜色设置为青色 \e[0将颜色重新置回.4如果想要别的颜色 ...

  9. shell下使用echo打印彩色字体及彩色背景

    转自:http://www.centoscn.com/shell/2014/0901/3637.html 对于shell中的终端打印感觉很好玩! 首先知道shell中终端打印有echo printf一 ...

最新文章

  1. Python字典基础
  2. gMIS吉密斯更新:Pivot透视+图示,List+观察模式
  3. java中wait和notify的虚假唤醒问题
  4. 集成学习(ensemble learning)(一)
  5. 【CPP 小技巧 (一)FPS】统计处理一张图像算法消耗的时间 3 种方法
  6. 《每日一剂》适配器刷新报错adapter.notifyDataSetChanged()解决
  7. html audio无法播放,audio 无法播放的问题
  8. 使用爬虫抓取网页内容
  9. php 对ioc容器的理解,关于php:了解IoC容器和依赖注入
  10. PMP学习资料干货分享 - 干货满满
  11. 谷歌云盘将共享链接中的文件保存到自己的云盘中
  12. linux分析rna-seq,RNA-seq 分析流程(一)linux部分
  13. PowerDesigner工具栏消失恢复
  14. 多目标优化问题中常见分解方法的理解
  15. 原来收汇宝真的是很烂
  16. xcode 可以打开xmind_如何在 iPad 上玩转 XMind?
  17. iphone通讯录的备份与恢复
  18. 前端-CSS样式的简单介绍
  19. A Game of Thrones(15)
  20. 首个实时全球空中交通监控系统在北大西洋上空全面投入运行和试用

热门文章

  1. BUAA_OVERWATCH第一次行动前战略部署
  2. 网络编程_socket_TCPIP
  3. 多少年前现在依旧爆火的游戏——星际战甲
  4. CleanMyMac X4.13.5中文版Mac电脑优化软件
  5. (转) shiro real的理解,密码匹配等
  6. 基于单片机的简易数字电压表设计
  7. (13.1.1)PMBOK之一(附):组织系统及其影响,过程资产环境因素与项目经理
  8. 思维导图在初中化学“物质构成的奥秘”教学中的应用
  9. String 去除空格 回车 换行 水平制表符
  10. Kai Ge - Q绑查询V1.4