richライブラリは、豪華(rich)に出力できるライブラリです。
本記事では、richライブラリの使い方を紹介します。
richライブラリの使い方を紹介します
この記事でわかること
- richライブラリとは
- richライブラリの使い方
目次
richライブラリとは
richライブラリは、豪華(rich)に出力できるライブラリです。
richライブラリを利用することで、ターミナル上でカラフルな出力ができるようになります。
また、表やソースコード、ツリー構造、Markdownなど、わかりやすく表示することができます。
画像


richライブラリのインストール
pipでライブラリをインストールします。
コマンドライン
pip install richrichライブラリの使い方
richライブラリの使い方を紹介します。
色をつけて表示
色をつけて表示します。
ソースコード
from rich import print
print("[bold green]成功![/bold green]")
print("[red]エラー[/red]が発生しました")
print("これは [bold]太字[/bold] です")コマンド実行結果


コンソールで色をつけて表示
コンソールで色をつけて表示します。
ソースコード
from rich.console import Console
console = Console()
console.print("Hello [bold cyan]Rich[/bold cyan]!")
console.print("Warning!", style="bold yellow")コマンド実行結果


表を表示
表を表示します。
ソースコード
from rich.table import Table
from rich.console import Console
import psutil
console = Console()
cpu_percent = psutil.cpu_percent()
mem = psutil.virtual_memory()
table = Table(title="システムステータス")
table.add_column("項目", style="cyan")
table.add_column("値", style="green")
table.add_row("CPU", f"{cpu_percent}%")
table.add_row("Memory", f"{mem.percent}%")
table.add_row("Status", "OK")
console.print(table)コマンド実行結果


進捗状況を表示
進捗状況を表示します。
ソースコード
from rich.progress import track
import time
for i in track(range(10), description="処理中..."):
time.sleep(0.5)コマンド実行結果


複数の進捗状況を表示
複数の進捗状況を表示します。
ソースコード
from rich.progress import Progress
import time
with Progress() as progress:
task1 = progress.add_task("Task A", total=100)
task2 = progress.add_task("Task B", total=50)
while not progress.finished:
progress.update(task1, advance=1)
progress.update(task2, advance=0.5)
time.sleep(0.1)コマンド実行結果


リアルタイムで表示
リアルタイムで表示します。
ソースコード
from rich.live import Live
from rich.table import Table
import time
import psutil
def make_table():
cpu_percent = psutil.cpu_percent()
mem = psutil.virtual_memory()
table = Table(title="リアルタイム監視")
table.add_column("項目")
table.add_column("値")
table.add_row("CPU", f"{cpu_percent}%")
table.add_row("Memory", f"{mem.percent}%")
return table
with Live(make_table(), refresh_per_second=2) as live:
for _ in range(10):
time.sleep(1)
live.update(make_table())コマンド実行結果


ログを表示
ログを表示します。
ソースコード
import logging
from rich.logging import RichHandler
import time
logging.basicConfig(
level=logging.INFO,
format="%(message)s",
handlers=[RichHandler()]
)
log = logging.getLogger("app")
log.info("起動しました")
log.warning("警告です")
time.sleep(1)
log.error("エラー発生")コマンド実行結果


Markdownを表示
Markdownを表示します。
ソースコード
from rich.console import Console
from rich.markdown import Markdown
console = Console()
md_text = """
# [Python]richライブラリの概要と使い方
## richライブラリとは
richライブラリは、豪華(rich)に出力できるライブラリです。
## richライブラリの使い方
### 見出し
以下、見出しの出力です。
# 見出し1
## 見出し2
### 見出し3
#### 見出し4
##### 見出し5
###### 見出し6
### 箇条書き
以下、箇条書きの出力です。
- 箇条書き1
- 箇条書き2
- 箇条書き3
1. 箇条書き1
1. 箇条書き2
1. 箇条書き3
### 太字
以下、太字の出力です。
**太字**
### 斜体
以下、斜体の出力です。
*斜体*
### 引用
以下、引用の出力です。
> 引用
### 水平線
以下、水平線の出力です。
---
### コード
以下、コードの出力です。
`コード`
```python
from rich.console import Console
console = Console()
console.print("Hello [bold cyan]Rich[/bold cyan]!")
console.print("Warning!", style="bold yellow")
"""
markdown = Markdown(md_text)
console.print(markdown)コマンド実行結果


オブジェクトを表示
オブジェクトを表示します。
ソースコード
from rich.console import Console
from rich import inspect
console = Console()
class Tanuki:
def __init__(self):
self.name = "yasuhira"
self.boots = True
self.skils = ["python", "c", "java"]
obj = Tanuki()
inspect(obj, console=console)コマンド実行結果


ソースコードを表示
ソースコードを表示します。
ソースコード
from rich.console import Console
from rich.syntax import Syntax
console = Console()
code = """
from rich.console import Console
console = Console()
console.print("Hello [bold cyan]Rich[/bold cyan]!")
console.print("Warning!", style="bold yellow")
"""
syntax = Syntax(
code,
"python",
theme="monokai",
line_numbers=True
)
console.print(syntax)
print()
syntax = Syntax(
code,
"python",
theme="github-dark",
line_numbers=True
)
console.print(syntax)
print()
Syntax(
code,
"python",
theme="dracula",
line_numbers=True,
indent_guides=True,
word_wrap=True
)
console.print(syntax)コマンド実行結果


ツリー構造を表示
ツリー構造を表示します。
ソースコード
from rich.console import Console
from rich.tree import Tree
console = Console()
tree = Tree("home")
script = tree.add("script")
sample_code = script.add("sample-code")
sample_code.add("README.md")
src = sample_code.add("src")
src.add("test")
src.add("main.py")
console.print(tree)コマンド実行結果


プロンプト形式で表示
プロンプト形式で表示します。
ソースコード
from rich.prompt import Prompt
from rich.console import Console
console = Console()
console.print("[bold magenta]Chat started (exitで終了)[/bold magenta]")
while True:
msg = Prompt.ask("[cyan]You[/cyan]")
if msg.lower() in ("exit", "quit"):
break
console.print(f"[green]AI[/green]: わたしはAIです。")コマンド実行結果


まとめ
Pythonのrichライブラリについて紹介しました。
richライブラリは
- Pythonで見やすい表示ができる
- 進捗状況を表示できる
- ログを表示できる
- 表を表示できる
- リアルタイムで表示できる
- Markdownを表示できる
- オブジェクトを表示できる
- ソースコードを表示できる
- ツリー構造を表示できる
- プロンプト形式で表示できる
Pythonのrichライブラリを利用すると、見やすい表示のCLIアプリを作成することができます。
通常のCLIアプリより豪華(rich)なCLIアプリを作成したい場合は、活用すると良いと思います。
