Skip to main content

rich-terminal-output

Create beautiful terminal output with Rich library including tables, progress bars, panels, and syntax highlighting. Use when building CLI applications or enhancing terminal output in Python.

跳到安装

来源信息

仓库
AutumnsGrove/Lattice
最近来源活动
2025年12月25日 17:12
检测到的 SKILL.md 语言
英语
星标
6
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
rich-terminal-output
description
Create beautiful terminal output with Rich library including tables, progress bars, panels, and syntax highlighting. Use when building CLI applications or enhancing terminal output in Python.
# Rich Terminal Output Skill ## When to Activate Activate this skill when: - Building CLI applications - Displaying structured data (tables) - Showing progress for long operations - Creating error/status panels - Pretty-printing objects for debugging - Enhancing logging output ## Installation ```bash uv add rich # Quick test python -c "from rich import print; print('[bold green]Rich working![/]')" ``` ## Core Concepts ### Console Object ```python from rich.console import Console console = Console() # Basic output console.print("Hello, World!") # Styled output console.print("[bold red]Error:[/] Something went wrong") console.print("[green]Success![/] Operation completed") ``` ### Markup Syntax ```python "[bold]Bold[/]" "[italic]Italic[/]" "[red]Red text[/]" "[blue on white]Blue on white background[/]" "[bold red]Combined styles[/]" "[link=https://example.com]Click here[/]" ``` ### Drop-in Print Replacement ```python from rich import print print("[bold cyan]Styled text[/]") print({"key": "value"}) # Auto-pretty-prints ``` ## Tables ```python from rich.console import Console from rich.table import Table console = Console() table = Table(title="User List") table.add_column("ID", style="cyan", justify="right") table.add_column("Name", style="magenta") table.add_column("Email", style="green") table.add_column("Status", justify="center") table.add_row("1", "Alice", "alice@example.com", "✓ Active") table.add_row("2", "Bob", "bob@example.com", "✓ Active") table.add_row("3", "Charlie", "charlie@example.com", "✗ Inactive") console.print(table) ``` ## Panels ```python from rich.console import Console from rich.panel import Panel console = Console() # Simple panel console.print(Panel("Operation completed!")) # Styled panel console.print(Panel( "[green]All tests passed![/]\n\n" "Total: 42 tests\n" "Time: 3.2s", title="Test Results", border_style="green" )) # Error panel console.print(Panel( "[red]Connection refused[/]\n\n" "Host: localhost:5432", title="[bold red]Error[/]", border_style="red" )) ``` ## Progress Bars ### Simple Progress ```python from rich.progress import track import time for item in track(range(100), description="Processing..."): time.sleep(0.01) ``` ### Multiple Tasks ```python from rich.progress import Progress with Progress() as progress: task1 = progress.add_task("[red]Downloading...", total=100) task2 = progress.add_task("[green]Processing...", total=100) while not progress.finished: progress.update(task1, advance=0.9) progress.update(task2, advance=0.6) time.sleep(0.02) ``` ## Syntax Highlighting ```python from rich.console import Console from rich.syntax import Syntax console = Console() code = ''' def hello(): print("Hello, World!") ''' syntax = Syntax(code, "python", theme="monokai", line_numbers=True) console.print(syntax) ``` ## Tree Displays ```python from rich.console import Console from rich.tree import Tree console = Console() tree = Tree("[bold blue]MyProject/[/]") src = tree.add("[bold]src/[/]") src.add("main.py") src.add("config.py") tests = tree.add("[bold]tests/[/]") tests.add("test_main.py") console.print(tree) ``` ## Logging Integration ```python import logging from rich.logging import RichHandler logging.basicConfig( level=logging.INFO, format="%(message)s", handlers=[RichHandler(rich_tracebacks=True)] ) logger = logging.getLogger("myapp") logger.info("Application started") logger.error("Connection failed") ``` ## Pretty Tracebacks ```python from rich.traceback import install # Call once at startup install(show_locals=True) # All exceptions now have beautiful tracebacks ``` ## Common Pitfalls ### Reuse Console Instance ```python # ❌ Bad def show(msg): Console().print(msg) # Creates new instance each time # ✅ Good console = Console() def show(msg): console.print(msg) ``` ### Escape User Input ```python from rich.markup import escape username = "user[admin]" # ❌ Bad - brackets break markup console.print(f"[blue]{username}[/]") # ✅ Good console.print(f"[blue]{escape(username)}[/]") ``` ### Handle Non-TTY ```python import sys console = Console(force_terminal=sys.stdout.isatty()) ``` ## CLI Application Pattern ```python import click from rich.console import Console from rich.panel import Panel console = Console() @click.command() @click.argument('filename') def process(filename): console.print(f"[bold]Processing:[/] {filename}") with console.status("[bold green]Working..."): result = do_work(filename) if result.success: console.print(Panel( f"[green]Processed {result.count} items[/]", title="Success" )) else: console.print(f"[red]Error:[/] {result.error}") ``` ## When NOT to Use Rich - Non-interactive scripts (output piped) - Server-side logging - Performance-critical loops - Minimal dependency requirements ## Related Resources See `AgentUsage/rich_formatting.md` for complete documentation including: - Advanced table customization - Spinner and status displays - Console recording - Integration patterns
在 GitHub 查看