banner
andrewji8

Being towards death

Heed not to the tree-rustling and leaf-lashing rain, Why not stroll along, whistle and sing under its rein. Lighter and better suited than horses are straw sandals and a bamboo staff, Who's afraid? A palm-leaf plaited cape provides enough to misty weather in life sustain. A thorny spring breeze sobers up the spirit, I feel a slight chill, The setting sun over the mountain offers greetings still. Looking back over the bleak passage survived, The return in time Shall not be affected by windswept rain or shine.
telegram
twitter
github

忘れ去って、今日はこの専用のPython開発者の完璧なターミナルツールを使い始めましょう。実際に効果を確認しました!

今日は皆さんに非常に美しいターミナルツール - Rich をおすすめします。

Rich は Python ライブラリで、ターミナルでリッチテキストや美しいフォーマットを提供します。

Rich API を使用すると、ターミナルにさまざまな色や異なるスタイルを簡単に出力できます。美しいテーブル、プログレスバー、Markdown、構文を強調表示したソースコードやトレースバックなど、優れた機能が数多くあります。

image
1.Rich の互換性

Rich は Linux、OSX、Windows に対応しています。新しい Windows ターミナルと一緒に使用でき、Windows のクラシックターミナルは 8 色に制限されています。

Rich は Jupyter Notebook とも使用でき、追加の設定は不要です。

2.Rich インストール手順

以下のいずれかの方法でコマンドを入力して依存関係をインストールしてください:

1.Windows 環境 Cmd を開く (スタート - 実行 - CMD)。

2.MacOS 環境 Terminal を開く (command + スペースで Terminal を入力)。

3.VSCode エディタまたは Pycharm を使用している場合は、画面下部の Terminal を直接使用できます。

1 pip install rich

3.Rich の Print 機能

Rich の出力機能を Python スクリプトプログラムに簡単に追加したい場合は、Rich Print メソッドをインポートするだけで、他の Python の組み込み機能のパラメータと似ています。試してみてください:

from rich import print

print("こんにちは、[bold magenta]世界[/bold magenta]!", ":vampire:", locals())

image
Rich の Print メソッドを使用して出力された内容は、色付きで強調表示されており、Python の組み込み Print と比較して明らかな利点があります。

4. カスタム Console コンソール出力
Rich ターミナルの内容をさらにカスタマイズしたい場合は、コンソールオブジェクトをインポートして構築する必要があります:

from rich.console import Console

console = Console()

Console オブジェクトには Print メソッドがあり、そのインターフェースは Python の組み込み Print 機能に似ています。試してみてください:

console.print("こんにちは", "世界!")

この時、ターミナルには「こんにちは 世界!」と表示されることに気付くでしょう。組み込みの「print」機能とは異なり、Rich はテキストを自動的に改行してターミナルの幅に合わせます。

出力にカスタムカラーやスタイルを追加する方法はいくつかあります。Style キーワード引数を追加することで、出力全体にスタイルを設定できます。以下はその例です:

console.print("こんにちは", "世界!", style="bold red")

出力は以下のようになります:

image
この例では、一度に一行のテキストのスタイルを設定しました。より細かく複雑なスタイルを得るために、Rich は特別なマークアップをレンダリングでき、その構文は Bbcode に似ています。以下はその例です:

console.print("意志があれば、[bold cyan]道[/bold cyan]がある。")

image

5.Console コンソールログ
Console オブジェクトには Log () メソッドがあり、Print () と似たインターフェースを持ち、現在の時間や呼び出されたファイルと行を表示できます。

デフォルトでは、Rich は Python 構造と Repr 文字列に対して構文強調表示を行います。コレクション(辞書やリストなど)をログに記録すると、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 = ["デッドプール", "スカイウォーカーの夜明け"]
    console.log("こんにちは、", console, "!")
    console.log(test_data, log_locals=True)

test_log()

上記の例の出力は以下のようになります:

image

Log_locals パラメータは、log メソッドを呼び出したローカル変数を含むテーブルを出力します。
Log メソッドは、長時間実行されるアプリケーション(サーバーなど)のログをターミナルに記録するためにも、デバッグを補助するためにも使用できます。

Logging 処理クラス

内蔵の処理クラスを使用して、Python ロギングモジュールの出力をフォーマットおよび着色することもできます。以下は出力の例です:

image
6. 絵文字
名前を二つのコロンの間に置くことで、コンソール出力に絵文字を挿入できます。以下はその例です:


>>> console.print(":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:")
😃 🧛 💩 👍 🦝

この機能は慎重に使用してください。
7. テーブル
Rich には、さまざまなボーダー、スタイル、セルの配置などのフォーマットオプションが含まれています。以下はシンプルな例です:

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("日付", style="dim", width=12)
table.add_column("タイトル")
table.add_column("制作予算", justify="right")
table.add_column("興行収入", justify="right")
table.add_row(
    "2019年12月20日", "スター・ウォーズ:スカイウォーカーの夜明け", "$275,000,000", "$375,126,118"
)
table.add_row(
    "2018年5月25日",
    "[red]ソロ[/red]: スター・ウォーズ・ストーリー",
    "$275,000,000",
    "$393,151,347",
)
table.add_row(
    "2017年12月15日",
    "スター・ウォーズ エピソード VIII: 最後のジェダイ",
    "$262,000,000",
    "[bold]$1,332,539,889[/bold]",
)

console.print(table)

この例の出力は以下のようになります:

image

注意してください、コンソールマークアップの表示方法は print() と log() と同じです。実際、Rich によってレンダリングされたすべての内容は、タイトル/行(さらには他のテーブル)に追加できます。Table クラスは賢く、列のサイズをターミナルの利用可能な幅に合わせて調整し、必要に応じてテキストの折り返しを処理します。以下は同じ例で、出力が上の表よりも小さいターミナルでのものです:

image

8. プログレスバー
Rich は、長時間実行されるタスクを追跡するために、複数のちらつかないプログレスバーをレンダリングできます。
基本的な使用法:Track 関数を呼び出して結果を反復処理します。以下はその例です:


from rich.progress import track

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

複数のプログレスバーを追加するのは難しくありません。以下はその効果の例です:

image

これらの列は、必要な詳細情報を表示するように構成できます。
組み込み列には、完了のパーセンテージ、ファイルサイズ、ファイル速度、残り時間が含まれます。以下は進行中のダウンロードを表示する例です:

image
進捗を表示しながら複数の URL をダウンロードできます。
9. 列によるデータ出力
Rich は、整然とした、等しいまたは最適な幅の列を通じてコンテンツを表示できます。以下は(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 から取得したデータを表示する列の例の出力です:

image

10.Markdown
Rich は Markdown をレンダリングでき、かなり良い形式でターミナルに表示します。
Markdown をレンダリングするには、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)

この例の出力は以下のようになります:

image

11. 構文強調表示
Rich は Pygments ライブラリを使用して構文ハイライトを実現します。使用法は Markdown のレンダリングに似ています。Syntax オブジェクトを構築し、それをコンソールに印刷します。以下はその例です:


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

my_code = '''
def iter_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]:
    """最初と最後の値のフラグを持つタプルを生成する。"""
    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)

出力は以下のようになります:

image
12. エラートレースバック
Rich は美しいエラートレースバックログをレンダリングでき、標準の Python トレースバックよりも読みやすく、より多くのコードを表示できます。
Rich をデフォルトのトレースバックハンドラとして設定すると、すべての例外が Rich によって表示されます。
以下は OSX(Linux と似た外観)での例です:

image

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。