Python - rich 库讲解

MedusaSorcerer的博客


近期我写下了两篇关于日志输出附带高亮颜色的博文:html

有效的使用工具为的是在咱们开发的过程当中, 能快速定位咱们须要关注的内容, 也感谢那些第三方库或者插件的开发者们。python

这篇博文主要是想介绍 rich 这个第三方库的使用, 那为什么会提到以前写的关于日志输出的呢?缘由是 rich 也是颜色输出日志的第三方库。shell

安装

Rich 的官方使用文档windows

python3 -m pip install rich
复制代码

使用

如下测试皆采用 python3 medusa.py 的方式执行测试代码。函数

print()

print 函数能够以更优雅的方式输出 Python 对象, 若是你打印的对象长度不须要分行显示的话, 它将用一行的方式展现给你。工具

#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
from rich import print as rprint

rprint("[italic red]Hello[/italic red] World!", locals())
复制代码

#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
from rich import print as rprint

rprint({
    'name': 'MedusaSorcerer',
    'blog': 'https://juejin.im/user/5da32395e51d4578200cc9c5',
    'locals()': '返回当前位置所有局部变量, 并以字典的方式展现',
    'python': '一种简单直接的开发语言, 好用就对了',
})
复制代码

Console

richConsole 对象是一个重点对象了, 首先你须要实例化一个 Console 对象, 在进行使用, 而你实例化的对象在渲染的时候将会检测如下几个属性值:post

  • size 是终端的当前尺寸(若是您调整窗口大小, 则可能会更改)
  • encoding 是默认编码(一般为utf-8)
  • is_terminal 是一个布尔值, 指示 Console 实例是否正在写入终端
  • color_system 是包含控制台颜色系统的字符串
    • None 彻底禁用颜色
    • auto 将自动检测颜色系统
    • standard 能够显示8种颜色, 正常和明亮的变化, 总共16种颜色
    • 256 能够显示标准中的16种颜色以及240种颜色的固定调色板
    • truecolor 能够显示1670万种颜色, 这极可能是显示器能够显示的全部颜色
    • windows 在旧版 Windows 终端中能够显示8种颜色, 新的 Windows 终端能够显示 truecolor

咱们先看下实例对象的 print() 方法:学习

#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
from rich.console import Console
console = Console()

console.print([1, 2, 3])
console.print("[blue underline]Looks like a link")
console.print(locals())
console.print("MEDUSA", style="white on blue")
复制代码

给个人第一感受和上面的导入的 print() 没啥区别哈~

咱们再看一个例子:测试

#!/usr/bin/env python
# _*_ Coding: UTF-8 _*_
from rich.console import Console

console = Console(width=20)

style = "bold white on blue"
console.print("Medusa", style=style)
console.print("Medusa", style=style, justify="left")
console.print("Medusa", style=style, justify="center")
console.print("Medusa", style=style, justify="right")
复制代码

咱们能够在指定 Console 大小的时候使用对其参数: justify

style 样式参数有什么规则呢?编码

  • boldb 粗体字
  • blink 用于闪烁的文本
  • blink2 用于快速闪烁的文本(大多数终端不支持)
  • conceal 用于隐藏的文本(大多数终端不支持)
  • italici 斜体文本(Windows不支持)
  • reverser 用于前景和背景颜色反转的文本
  • strikes 带有一行的文字
  • underlineu 带下划线的文字
  • underline2uu 双下划线文字
  • frame 用于带框的文本
  • encircle 环绕的文本
  • overlineo 上划线的文字

你也能够这样来讲明多个样式 console.print("Danger, Will Robinson!", style="blink bold red underline on white 或者是使用 not 来否认样式 console.print("foo [not bold]bar[/not bold] baz", style="bold")

rich 的功能很强大, 支持 console 直接输出, 支持 log 输出, 也支持 file 文件写入等方式, 还有表格输出等等, 若是你想进一步学习这个库, 建议你移步 Rich 的官方使用文档, 这个世界没有什么比官方文档更加具体的文档了。

那博客的目的呢?

在此以前你还在为你的输出担心, 而一篇博文的简单介绍以后你发现了一个新的工具, 对的, 博客只是一个解决 BUG 和工具分享的平台了, 我我的以为 rich 的功能还不错, 推荐了几个简单的功能, 让你不须要查看大量的官方文档再去评估这个工具的优缺点。

今天的你进步了吗?

相关文章
相关标签/搜索