<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          專屬Python開發(fā)者的完美終端工具

          共 4998字,需瀏覽 10分鐘

           ·

          2021-07-31 02:13

          Rich 是一個 Python 庫,可以為你在終端中提供富文本和漂亮、精美的格式。

          使用 Rich API 可以很容易的在終端輸出添加各種顏色和不同風(fēng)格。它可以繪制漂亮的表格,進(jìn)度條,markdown,突出顯示語法的源代碼及回溯等等,優(yōu)秀的功能不勝枚舉。

          5da9c431c167015789e6daa13ea48cb7.webp

          # 1.Rich 兼容性

          Rich 適用于 Linux,OSX 和 Windows??膳c新的 Windows 終端一起使用,Windows 的經(jīng)典終端僅限 8 種顏色。

          Rich 還可以與 Jupyter NoteBook 一起使用,而無需其他配置。

          # 2.Rich 安裝說明

          請選擇以下任一種方式輸入命令安裝依賴

          1. Windows 環(huán)境 打開 Cmd (開始-運行-CMD)。

          2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。

          3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.

          pip?install?rich

          # 3.Rich 的 Print 功能

          想毫不費力地將 Rich 的輸出功能添加到你的Python腳本程序中,你只需導(dǎo)入 rich print 方法,該方法和其他 Python 的自帶功能的參數(shù)類似。你可以試試:

          from?rich?import?print

          print("Hello,?[bold?magenta]World[/bold?magenta]!",?":vampire:",?locals())
          f97b773095b86779e0fdf4df26a9ec60.webp

          可以看到,基于 rich 的 print 方法輸出的內(nèi)容都是帶顏色、帶重點的,相比于Python自帶的 print 有明顯的優(yōu)勢。

          # 4.自定義 Console 控制臺輸出

          想要對 Rich 終端內(nèi)容進(jìn)行更多的自定義設(shè)置,你需要導(dǎo)入并構(gòu)造一個控制臺對象:

          from?rich.console?import?Console

          console?=?Console()

          Console 對象含有一個 print 方法,它的界面與 python 內(nèi)置的 print 功能相似。你可以試試:

          console.print("Hello",?"World!")

          你可能已經(jīng)料到,這時終端上會顯示“ Hello World!”,請注意,與內(nèi)置的“打印”功能不同,Rich 會將文字自動換行以適合終端寬度。

          有幾種方法可以為輸出添加自定義顏色和樣式。你可以通過添加 style 關(guān)鍵字參數(shù)來為整個輸出設(shè)置樣式。例子如下:

          console.print("Hello",?"World!",?style="bold?red")

          輸出如下圖:

          eb7fe173389180a7351eec3d78615e9a.webp

          這個范例一次只設(shè)置了一行文字的樣式。如果想獲得更細(xì)膩更復(fù)雜的樣式,Rich 可以渲染一個特殊的標(biāo)記,其語法類似于 bbcode。示例如下:

          console.print("Where?there?is?a?[bold?cyan]Will[/bold?cyan]?there?[u]is[/u]?a?[i]way[/i].")
          29c28609cde8465b22b505a46415b3db.webp

          # 5.Console 控制臺記錄

          Console 對象具有一個 log() 方法,該方法具有與 print() 類似的界面,除此之外,還能顯示當(dāng)前時間以及被調(diào)用的文件和行。

          默認(rèn)情況下,Rich 將針對 Python 結(jié)構(gòu)和 repr 字符串進(jìn)行語法突出顯示。如果你記錄一個集合(如字典或列表),Rich 會把它漂亮地打印出來,使其切合可用空間。下面是其中一些功能的示例:

          from?rich.console?import?Console
          console?=?Console()

          test_data?=?[
          ????{"jsonrpc":?"2.0",?"method":?"sum",?"params":?[None,?1,?2,?4,?False,?True],?"id":?"1",},
          ????{"jsonrpc":?"2.0",?"method":?"notify_hello",?"params":?[7]},
          ????{"jsonrpc":?"2.0",?"method":?"subtract",?"params":?[42,?23],?"id":?"2"},
          ]

          def?test_log():
          ????enabled?=?False
          ????context?=?{
          ????????"foo":?"bar",
          ????}
          ????movies?=?["Deadpool",?"Rise?of?the?Skywalker"]
          ????console.log("Hello?from",?console,?"!")
          ????console.log(test_data,?log_locals=True)


          test_log()

          以上范例的輸出如下:

          4d33fb8dae02f32a67616d7c57534339.webp

          注意其中的 log_locals 參數(shù)會輸出一個表格,該表格包含調(diào)用 log 方法的局部變量。

          log 方法既可用于將長時間運行應(yīng)用程序(例如服務(wù)器)的日志記錄到終端,也可用于輔助調(diào)試。

          Logging 處理程序

          你還可以使用內(nèi)置的處理類來對 Python 日志記錄模塊的輸出進(jìn)行格式化和著色。下面是輸出示例:

          17a5ab8ef5fc167d26ec5b9304db36e4.webp

          # 6. 表情符號

          將名稱放在兩個冒號之間即可在控制臺輸出中插入表情符號。示例如下:

          >>>?console.print(":smiley:?:vampire:?:pile_of_poo:?:thumbs_up:?:raccoon:")
          ??????????????

          請謹(jǐn)慎地使用此功能。

          # 7.表格

          Rich 包含多種邊框,樣式,單元格對齊等格式設(shè)置的選項。下面是一個簡單的示例:

          from?rich.console?import?Console
          from?rich.table?import?Column,?Table

          console?=?Console()

          table?=?Table(show_header=True,?header_style="bold?magenta")
          table.add_column("Date",?style="dim",?width=12)
          table.add_column("Title")
          table.add_column("Production?Budget",?justify="right")
          table.add_column("Box?Office",?justify="right")
          table.add_row(
          ????"Dev?20,?2019",?"Star?Wars:?The?Rise?of?Skywalker",?"$275,000,000",?"$375,126,118"
          )
          table.add_row(
          ????"May?25,?2018",
          ????"[red]Solo[/red]:?A?Star?Wars?Story",
          ????"$275,000,000",
          ????"$393,151,347",
          )
          table.add_row(
          ????"Dec?15,?2017",
          ????"Star?Wars?Ep.?VIII:?The?Last?Jedi",
          ????"$262,000,000",
          ????"[bold]$1,332,539,889[/bold]",
          )

          console.print(table)

          該示例的輸出如下:

          67543a7bd36990c73ec226c98e88f8b5.webp

          請注意,控制臺標(biāo)記的呈現(xiàn)方式與 print() 和 log() 相同。實際上,由 Rich 渲染的任何內(nèi)容都可以添加到標(biāo)題/行(甚至其他表格)中。

          Table 類很聰明,可以調(diào)整列的大小以適合終端的可用寬度,并能根據(jù)需要做文本環(huán)繞的處理。下面是相同的示例,輸出與比上表小的終端上:

          5704a3002db672226425307b310ef903.webp

          # 8.進(jìn)度條

          Rich 可以渲染多個不閃爍的進(jìn)度條形圖,以跟蹤長時間運行的任務(wù)。

          基本用法:用 track 函數(shù)調(diào)用程序并迭代結(jié)果。下面是一個例子:

          from?rich.progress?import?track

          for?step?in?track(range(100)):
          ????do_step(step)

          添加多個進(jìn)度條并不難。以下是效果示例:

          d97675558923339a3878cc0adc94b576.webp

          這些列可以配置為顯示你所需的任何詳細(xì)信息。

          內(nèi)置列包括完成百分比,文件大小,文件速度和剩余時間。下面是顯示正在進(jìn)行的下載的示例:

          ea9445bb35a89961850b21bc8c455af3.webp

          它可以在顯示進(jìn)度的同時下載多個 URL。要自己嘗試一下,請參閱示例文件中的 examples/downloader.py ,在Python實用寶典公眾號后臺回復(fù) rich示例 下載全部示例。

          # 9.按列輸出數(shù)據(jù)

          Rich 可以將內(nèi)容通過排列整齊的,具有相等或最佳的寬度的列來呈現(xiàn)。下面是(macOS / Linux) ls 命令的一個非?;镜目寺?,用列來顯示目錄列表:

          import?os
          import?sys

          from?rich?import?print
          from?rich.columns?import?Columns

          directory?=?os.listdir(sys.argv[1])
          print(Columns(directory))

          以下屏幕截圖是列示例的輸出,該列顯示了從 API 提取的數(shù)據(jù):

          baa2723180f961b720b3cb0c9f30ca5f.webp

          # 10.Markdown

          Rich 可以呈現(xiàn)markdown,相當(dāng)不錯的將其格式顯示到終端。

          為了渲染 markdown,請導(dǎo)入 Markdown 類,將其打印到控制臺。例子如下:

          from?rich.console?import?Console
          from?rich.markdown?import?Markdown

          console?=?Console()
          with?open("README.md")?as?readme:
          ????markdown?=?Markdown(readme.read())
          console.print(markdown)

          該例子的輸出如下圖:

          95a26f1ac5165715705625792ff3df34.webp

          # 11.語法突出顯示

          Rich 使用 pygments 庫來實現(xiàn)語法高亮顯示。用法類似于渲染 markdown。構(gòu)造一個 Syntax 對象并將其打印到控制臺。下面是一個例子:

          from?rich.console?import?Console
          from?rich.syntax?import?Syntax

          my_code?=?'''
          def?iter_first_last(values:?Iterable[T])?-&gt;?Iterable[Tuple[bool,?bool,?T]]:
          ????"""Iterate?and?generate?a?tuple?with?a?flag?for?first?and?last?value."""
          ????iter_values?=?iter(values)
          ????try:
          ????????previous_value?=?next(iter_values)
          ????except?StopIteration:
          ????????return
          ????first?=?True
          ????for?value?in?iter_values:
          ????????yield?first,?False,?previous_value
          ????????first?=?False
          ????????previous_value?=?value
          ????yield?first,?True,?previous_value
          '''
          syntax?=?Syntax(my_code,?"python",?theme="monokai",?line_numbers=True)
          console?=?Console()
          console.print(syntax)

          輸出如下:

          5492f4b27f0a0fd34530dd78e004ece9.webp

          # 12.錯誤回溯(traceback)

          Rich 可以渲染漂亮的錯誤回溯日志,比標(biāo)準(zhǔn)的 Python 回溯更容易閱讀,并能顯示更多代碼。

          你可以將 Rich 設(shè)置為默認(rèn)的回溯處理程序,這樣所有異常都將由 Rich 為你呈現(xiàn)。

          下面是在 OSX(與 Linux 類似)上的外觀:

          73d2d6b516481aaef6e7f123b98f2182.webp

          我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實戰(zhàn)教程,請持續(xù)關(guān)注我們。歡迎在留言區(qū)吱一聲,記得給個三連哦。


          fd83bf7b2425dc0b793b1c06dce80a92.webp

          往期回顧

          用Python做個小仙女代碼蹦迪視頻


          總結(jié) 90 條寫 Python 程序的建議


          一個 零差評的 Python 內(nèi)置庫


          eac6792500200081dde9ef815b5c13f4.webp

          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日日夜夜三级电影网站 | 豆花视频国产区xxx | 一区二区三区四区在线看 | 看毛片的网站 | 操逼操逼操逼操逼操逼操逼操逼操逼 |