【Python教程】拒绝素面朝天,程序输出也要美美哒!rich模块(一)

2022年7月31日 407点热度 0人点赞 0条评论

点击蓝字
关注我们

图片

关注公众号,后台回复“python资料”,获取python资料大礼包。

大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。

在我们学习编程的路上,陪伴我们最久的就是解释器小解解了。而且我们经常会用print函数来让解释器打印出来一些信息来看一看程序运行的情况,程序运行异常的信息也会打印出来。如果编写成了没有图形界面的程序,解释器打印出来的信息可能就是指引人们操作程序的关键提示了。所以一个富有表现力的打印结果不但可以让我们自己赏心悦目,而且还能给使用者带来更好的体验。

但眼下我们打印出来的内容就是这么普普通通,平平无奇。怎么能够让解释器打印出来的内容给人眼前一亮呢?我们可以使用rich模块。

rich模块,一听名字就这么阔气。不过这里的rich可不是有钱的意思,它代表的是“富文本”。有的同学可能问了,文本还有贫富之分吗?有呀!我们在记事本里写的和使用print方法打印出来的都可以算“穷文本”,除了文字之外一无所有,没有字体,没有字号,没有颜色,没有尺寸,总得来说就是素面朝天的文本,只不过因为“穷”字不好听,我们可以换个字,称它为“纯文本”。

图片

但“富文本”一出场就带有阔少的光环,它可以设置字体、字号、颜色等等各种各样的元素。这就让文本的表现力提升了好几个等级。那么如何编辑富文本呢?看过室长HTML教程的同学很快就能想到了:用标记。关于rich模块里的标记怎么用后边室长会讲到。

当然rich模块比富文本还有更“富”一些,它还能够自动进行语法高亮,打印表格,打印markdown文本以及实现一些其他功能,非常的实用。话不多说,我们这就来安装一下rich模块亲手试一试。rich模块的安装名和导入名是一样的。在导入之前我们可以在终端使用python运行一下rich模块(模块也是代码也可以运行):

图片

图片

图片

是不是看得眼花缭乱?

我们需要导入rich模块中的print方法,这个方法和系统的print方法是同名的,如果在代码中要用到这两种方法,导入时需要改一下名字。我们打印一个列表看看两种方法有什么不同:

图片

图片

也没什么不同嘛!如果你使用的是PyCharm,确实会得到这样的结果,但这是因为PyCharm用run运行代码出来的命令行界面默认是“素颜模式”,我们需要对它进行设置。点击这个小扳手:

图片

然后将Execution下的 Emulate terminal in output console勾选上。

图片

现在我们再来执行一次:

图片

是不是不一样了?

虽然我们没有指定打印出来的字体颜色,但rich模块根据数据类型自动进行了指定。我们再来看看其他数据类型会展现成什么样子:

图片

图片

图片

图片

就连bool值、数据类型都有自己的专属颜色,这下终于不用对着一堆白花花的文字看到头疼了。

接下来就是我们之前所说的富文本的标记方法。与HTML不同,rich模块使用方括号进行标记:

图片

图片

但是rich模块的标记方式更为随意,可以一个标记里容纳多种样式:

图片

图片

此外rich模块还可以很方便地打印emoji表情,但这需要PyCharm或命令提示符的支持,室长没有在win10上测试成功,有了解的同学可以留言分享一下。打印的方法非常简单,就是emoji表情名两边加上两个冒号:

图片

更加高级的是,如果我们的待打印字符串是一段代码,rich模块还可以实现语法高亮的功能:

图片

图片

不过貌似也没怎么好看,那是因为我们并没有告诉rich模块这是什么语言的代码。在rich的子模块syntax中,有一个Syntax类。我们将代码传入到Syntax类并设定代码语言和展示风格就可以做出符合语言的代码高亮展示:

图片

图片

这里室长设置了两个格式,一个是显示代码行数,一个是背景颜色为黑色。如果想改文字的配色规则的话需要设置theme参数,内容是各种配色的名称,比如我们现在PyCharm使用的darcula:

图片

图片

如果你觉得Python的异常提示信息总让你摸不到头脑,还要按照行数一行一行地去比对出问题的地方,甚至不知道出问题时变量的值是多少,那你不妨尝试一下rich的traceback功能。最简单的方法就是直接把traceback安装到代码中,这样代码出现的异常都会出现rich的traceback信息:

图片

这里我们设置了show_locals参数为True,这样就可以显示异常发生时各个变量的值了:

图片

可以看到rich的traceback功能展示出了出现异常所在代码行的前几行,方便我们进行查找定位,同时展现出了异常发生时各个变量的值,方便我们排查问题。

虽然我们介绍了这么多令人眼花缭乱的功能,但这仅仅是rich模块诸多功能中的一小部分。不过如果想要实现其他更多的功能,我们需要进行稍微复杂一些的操作,当然只是稍微复杂。由于篇幅所限,我们下期再聊。如果这篇文章对你有所帮助,希望能帮室长点个赞和在看,你的鼓励是室长进步的动力!

【室长原理课】系列在不正经地科普一些互联网小知识,没有太多高深的内容,把这个系列分享给你的朋友吧!

【室长原理课】网上那么火的爬虫,到底是个什么东西?
【室长原理课】大几百买的路由器,究竟是用来干嘛的?
【室长原理课】为什么只换了个DNS,上网就一下子快了?
【室长原理课】都说P2P暴雷了,但你知道P2P到底是什么吗?

【室长原理课】为了让你看上网页,你知道浏览器有多努力吗?

【室长原理课】那么时髦的NAS,你要不要也组一个?


喜欢此内容的人还喜欢

主线教程系列:

【Python教程】铺天盖地的Python广告,点进去却发现门都入不了?


【Python教程】引言——程序是什么,又为什么是程序?


【Python教程】一、懒是人类进步的阶梯,编程则是懒上加懒|Python解释器


【Python教程】二、写一个代码有二百多个秘书伺候着,还愁写不出来好东西?Python的IDE


【Python教程】三、我把骆驼起名叫大象,也能把它装冰箱吗?程序的变量 


【Python教程】四、函数真的是含着树吗?程序的函数(一)


【Python教程】五、如果函数是一个工厂|程序的函数(二)


【Python教程】六、如果你给不了我想要的,我就报错给你看|数据类型


【Python教程】七、那么多如果,只剩下结果|if语句和bool值


【Python教程】八、码农一张嘴,程序跑断腿|for循环


【Python教程】九、只要学不死,就往死里学|while 循环和逻辑运算


【Python教程】十、站在巨人的光头上|初识Python模块


【Python教程】十一、泪流满面,下载再也不用度娘了|模块的下载与安装 


【Python教程】十二、小试牛刀,写一个给文件批量重命名的小程序名


【Python教程】十三、我连对象都找不到还让我用对象?类与对象(一)


【Python教程】十四、找不到对象?用Python自己写一个|类与对象(二)


【Python教程】十五、动物园举办联欢大会哪个动物没有来?类变量


【Python教程】十六、变量真的是变量名+变量值吗?变量的本质 


【Python教程】十七、在Python里搞克隆|浅拷贝与深拷贝 


【Python教程】十八、这根本就不是我的错嘛!Python的异常处理


【Python教程】十九、用Python写bug的你,遇到过哪些坑?Python的异常类型


【Python教程】二十、我竟然从全员大筛中领悟到了生成器的用法!迭代器和生成器


【Python教程】二十一、懒出天际!Python中的简洁语法


【Python教程】二十二——奇怪的符号增加了!Python的装饰器


【Python教程】二十三、原来是你!Python的魔法方法(一)


【Python教程】二十四、原来是你!Python的魔法方法(二)


【Python教程】二十五、Python中的魔法属性


番外系列

【Python番外】玩大了,一个解释器已经不够用了|Anaconda介绍


【Python番外】写代码宜工工整整,忌放飞自我|代码规范


【Python番外】坑太多了都不知道蹲哪个了|关键字参数和默认值 


【Python教程】列表原来是贪吃蛇?列表小技能


【Python教程】列表不是贪吃蛇,是贪吃蚯蚓?列表切片


【Python教程】羊肉串香还是字符串香?都香!字符串小技巧


【Python教程】小练习,写一个“谁在哪儿干什么”的小游戏


【Python教程】加强版列表?字典小技巧


【Python教程】Python中的时间处理——time模块


【Python教程】Python中的时间处理——datetime模块


【Python教程】把文字里的数据“抠”出来|正则表达式和re模块(一)


【Python教程】把文字里的数据“抠”出来|正则表达式和re模块(二)


【Python教程】把文字里的数据“抠”出来|正则表达式和re模块(三)


【Python教程】小练习,用Python解数独(一)


【Python教程】小练习,用Python解数独(二)


【Python教程】小练习,用Python解数独(三)


【Python教程】小练习,用Python解数独(完,内附代码)


【Python教程】随机一下!Python中的random模块


不会爬虫,没有数据?这个模块可以帮你获取!


【Python教程】使用pillow模块做个照片墙


【Python教程】造“假”有理!用faker模块批量生成假数据

Pandas、Numpy系列:

【Python教程】有了它,excel彻底沦为工具人!初识pandas模块(一)


【Python教程】有了它,excel彻底沦为工具人!初识pandas模块(二)


【Python教程】正儿八经地认识一下pandas(一)


【Python教程】正儿八经地认识一下pandas(二)


【Python教程】正儿八经地认识一下pandas(三)


【Python教程】关于pandas,你还应该知道这些(一)


【Python教程】关于pandas,你还应该知道这些(二)


【Python教程】来认识认识Pandas的爹!初识NumPy模块(一)


【Python教程】来认识认识Pandas的爹!初识NumPy模块(二)


【Python教程】来认识认识Pandas的爹!初识NumPy模块(三)


【Python教程】小练习,使用Pandas记记账


【Python教程】关于pandas和numpy,你还应该知道这些(三)


【Python教程】关于pandas和numpy,你还应该知道这些(四)

数据可视化系列有更新

【Python教程】pandas+matplotlib,数据作图从未如此简单! 


【Python教程】matplotlib中的绘图逻辑 


【Python教程】matplotlib中的画图区域


【Python教程】matplotlib的基础图表类型


【Python教程】matplotlib的图表元素


【Python教程】matplotlib中的通用参数:线型、标记类型和颜色


【Python教程】matplotlib的柱状图


【Python教程】matplotlib的饼图 


【Python教程】matplotlib的直方图


【Python教程】可以将句子拆成字词的jieba模块


【Python教程】番外篇——用Python做一张好看的词云图


【Python教程】matplotlib的箱线图


【Python教程】matplotlib的小提琴图


【Python教程】matplotlib中的误差棒


【Python教程】设置matplotlib的单个元素


【Python教程】让图表的色彩更丰富!matplotlib中的colormap


办公自动化系列

90%的人不曾用过的Word技巧——邮件合并


【Python教程】用Python自动化生成Word文档


【Python教程】用Python自动化生成ppt(一)


【Python教程】用Python自动化生成ppt(二)


【Python教程】用Python自动化生成ppt(三)


【Python教程】用Python发电子邮件


批量处理照片,别再用PS了!用它速度快上十倍!


【Python教程】用Python发电子邮件(二)


【Python教程】告别点点点!用Python制作鼠标连点器


左右滑动查看下一篇

图片


74300【Python教程】拒绝素面朝天,程序输出也要美美哒!rich模块(一)

这个人很懒,什么都没留下

文章评论