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 的功能還不錯, 推薦了幾個簡單的功能, 讓你不須要查看大量的官方文檔再去評估這個工具的優缺點。

今天的你進步了嗎?

相關文章
相關標籤/搜索