Python之打造专属Python开发者的完美终端工具Rich
生活随笔
收集整理的這篇文章主要介紹了
Python之打造专属Python开发者的完美终端工具Rich
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、前言
- Rich 是一個(gè) Python 庫(kù),可以在終端中提供富文本和漂亮、精美的格式。
- 使用 Rich API 可以很容易的在終端輸出添加各種顏色和不同風(fēng)格,它可以繪制漂亮的表格,進(jìn)度條,markdown,突出顯示語(yǔ)法的源代碼及回溯等,優(yōu)秀的功能不勝枚舉。
二、Rich 兼容性
- Rich 適用于 Linux,OSX 和 Windows。可與新的 Windows 終端一起使用,Windows 的經(jīng)典終端僅限 8 種顏色。
- Rich 還可以與 Jupyter NoteBook 一起使用,而無(wú)需其他配置。
三、Rich 安裝說(shuō)明
① Python 安裝
- 在 windows 上安裝 Python:
-
- 下載 Python 的最新版本:訪問(wèn)鏈接 Python 官網(wǎng),在 Windows 操作系統(tǒng)上安裝 Python 3.10.0,大家也可以自行選擇最新版的下載。
-
- 進(jìn)入下一個(gè)頁(yè)面后,拉到最下面,選擇 Windows embeddable package (64-bit) 下載:
-
- 雙擊下載完成的應(yīng)用程序,記得一定要勾選 ADD Python 3.7 to PATH,否則 cmd 無(wú)法運(yùn)行 Python,然后選擇 Install Now 進(jìn)行安裝,默認(rèn)會(huì)安裝 pip,而且將安裝到 C 盤(pán)(推薦)。如果希望換一個(gè)盤(pán)安裝,可以點(diǎn)擊 Customize installation 在里面選擇其他的盤(pán)。
- 在 macOS 上安裝 Python:
-
- 其實(shí) macOS 上是默認(rèn)安裝了 Python 的,只不過(guò)版本是 Python2.7,其相對(duì)于現(xiàn)在的 Python 3 缺少了很多特性,而且速度也比 Python 3 慢,因此還是建議大家裝 Python 3。
-
- 同樣地,下載 Python 的最新版本,訪問(wèn)鏈接:Python 官網(wǎng),在 macOS 操作系統(tǒng)上安裝 Python 3.7.4,大家也可以自行選擇最新版的下載。
-
- 進(jìn)入下一個(gè)頁(yè)面后,拉到最下面,選擇 macOS 64-bit universal2 installer 下載:
-
- 下載完成后得到一個(gè) pkg 文件,雙擊打開(kāi),按照指示步驟進(jìn)行安裝即可。
② 安裝依賴
- 請(qǐng)選擇以下任一種方式輸入命令安裝依賴:
-
- Windows 環(huán)境打開(kāi) Cmd (開(kāi)始 - 運(yùn)行 - CMD);
-
- MacOS 環(huán)境打開(kāi) Terminal (command + 空格輸入 Terminal);
-
- 如果使用的是 VSCode 編輯器或 Pycharm,可以直接使用界面下方的 Terminal。
四、Rich 的 Print 功能
- 想毫不費(fèi)力地將 Rich 的輸出功能添加到 Python 腳本程序中,只需導(dǎo)入 rich print 方法,該方法和其他 Python 的自帶功能的參數(shù)類(lèi)似:
- 可以看到,基于 rich 的 print 方法輸出的內(nèi)容都是帶顏色、帶重點(diǎn)的,相比于 Python 自帶的 print 有明顯的優(yōu)勢(shì)。
五、自定義 Console 控制臺(tái)輸出
- 想要對(duì) Rich 終端內(nèi)容進(jìn)行更多的自定義設(shè)置,需要導(dǎo)入并構(gòu)造一個(gè)控制臺(tái)對(duì)象:
- Console 對(duì)象含有一個(gè) print 方法,它的界面與 python 內(nèi)置的 print 功能相似:
- 可能你已經(jīng)料到,這時(shí)終端上會(huì)顯示“ Hello World!”,請(qǐng)注意,與內(nèi)置的“打印”功能不同,Rich 會(huì)將文字自動(dòng)換行以適合終端寬度。
- 有幾種方法可以為輸出添加自定義顏色和樣式,可以通過(guò)添加 style 關(guān)鍵字參數(shù)來(lái)為整個(gè)輸出設(shè)置樣式,如下:
- 輸出如下圖:
- 這個(gè)示例一次只設(shè)置了一行文字的樣式,如果想獲得更細(xì)膩更復(fù)雜的樣式,Rich 可以渲染一個(gè)特殊的標(biāo)記,其語(yǔ)法類(lèi)似于 bbcode。示例如下:
六、Console 控制臺(tái)記錄
- Console 對(duì)象具有一個(gè) log() 方法,該方法具有與 print() 類(lèi)似的界面,除此之外,還能顯示當(dāng)前時(shí)間以及被調(diào)用的文件和行。
- 默認(rèn)情況下,Rich 將針對(duì) Python 結(jié)構(gòu)和 repr 字符串進(jìn)行語(yǔ)法突出顯示。如果記錄一個(gè)集合(如字典或列表),Rich 會(huì)把它漂亮地打印出來(lái),使其切合可用空間。如下,是其中一些功能的示例:
- 以上示例的輸出如下:
- 注意其中的 log_locals 參數(shù)會(huì)輸出一個(gè)表格,該表格包含調(diào)用 log 方法的局部變量。log 方法既可用于將長(zhǎng)時(shí)間運(yùn)行應(yīng)用程序(例如服務(wù)器)的日志記錄到終端,也可用于輔助調(diào)試。
- Logging 處理程序:還可以使用內(nèi)置的處理類(lèi)來(lái)對(duì) Python 日志記錄模塊的輸出進(jìn)行格式化和著色。下面是輸出示例:
七、 表情符號(hào)
- 將名稱(chēng)放在兩個(gè)冒號(hào)之間即可在控制臺(tái)輸出中插入表情符號(hào)。示例如下:
- 注意:請(qǐng)謹(jǐn)慎使用此功能。
八、表格
- Rich 包含多種邊框,樣式,單元格對(duì)齊等格式設(shè)置的選項(xiàng)。下面是一個(gè)簡(jiǎn)單的示例:
- 該示例的輸出如下:
- 注意,控制臺(tái)標(biāo)記的呈現(xiàn)方式與 print() 和 log() 相同。實(shí)際上,由 Rich 渲染的任何內(nèi)容都可以添加到標(biāo)題/行(甚至其他表格)中。
- Table 類(lèi)很聰明,可以調(diào)整列的大小以適合終端的可用寬度,并能根據(jù)需要做文本環(huán)繞的處理。如下,是相同的示例,輸出與比上表小的終端上:
九、進(jìn)度條
- Rich 可以渲染多個(gè)不閃爍的進(jìn)度條形圖,以跟蹤長(zhǎng)時(shí)間運(yùn)行的任務(wù)。
- 基本用法:用 track 函數(shù)調(diào)用程序并迭代結(jié)果,如下所示:
- 添加多個(gè)進(jìn)度條并不難,如下所示:
- 這些列可以配置為顯示所需的任何詳細(xì)信息。內(nèi)置列包括完成百分比,文件大小,文件速度和剩余時(shí)間。如下所示,顯示正在進(jìn)行的下載示例:
- 它可以在顯示進(jìn)度的同時(shí)下載多個(gè) URL。
十、按列輸出數(shù)據(jù)
- Rich 可以將內(nèi)容通過(guò)排列整齊的,具有相等或最佳的寬度的列來(lái)呈現(xiàn)。如下,(macOS / Linux) ls 命令的一個(gè)非常基本的克隆,用列來(lái)顯示目錄列表:
- 以下屏幕截圖是列示例的輸出,該列顯示了從 API 提取的數(shù)據(jù):
十一、Markdown
- Rich 可以呈現(xiàn)markdown,相當(dāng)不錯(cuò)的將其格式顯示到終端。
- 為了渲染 markdown,請(qǐng)導(dǎo)入 Markdown 類(lèi),將其打印到控制臺(tái)。如下:
- 該示例的輸出如下圖:
十二、語(yǔ)法突出顯示
- Rich 使用 pygments 庫(kù)來(lái)實(shí)現(xiàn)語(yǔ)法高亮顯示,用法類(lèi)似于渲染 markdown,構(gòu)造一個(gè) Syntax 對(duì)象并將其打印到控制臺(tái),如下所示:
- 輸出如下:
十三、錯(cuò)誤回溯(traceback)
- Rich 可以渲染漂亮的錯(cuò)誤回溯日志,比標(biāo)準(zhǔn)的 Python 回溯更容易閱讀,并能顯示更多代碼。可以將 Rich 設(shè)置為默認(rèn)的回溯處理程序,這樣所有異常都將由 Rich 呈現(xiàn)。
- 如下,在 OSX(與 Linux 類(lèi)似)上的外觀:
總結(jié)
以上是生活随笔為你收集整理的Python之打造专属Python开发者的完美终端工具Rich的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python之精心整理的50道入门练手习
- 下一篇: Swift之深入解析如何避免单元测试中的