Skip to main content

python-rich

Creating beautiful terminal output with Python Rich library

Zur Installation springen

Quellinformationen

Repository
NeuralBlitz/Mito
Letzte Quellaktivität
22. März 2026 um 13:29
Erkannte Sprache von SKILL.md
Englisch
Sterne
0
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
python-rich
description
Creating beautiful terminal output with Python Rich library
license
MIT
metadata
{"audience":"python-developers","category":"terminal-output"}
# Skill: Python Rich ## What I do Create rich, formatted terminal output with Python Rich library - including colored text, tables, progress bars, syntax highlighting, and beautiful console applications. ## When to use me When enhancing terminal output with colors, tables, progress bars, Markdown rendering, or building rich CLI applications without a full TUI framework. ## Installation ```bash pip install rich ``` ## Basic Usage ### Simple Colored Output ```python from rich import print as rprint from rich.console import Console from rich.theme import Theme console = Console() # Simple colored text rprint("[red]This is red[/red]") rprint("[bold blue]Bold blue[/bold blue]") rprint("[yellow on black]Yellow on black[/yellow on black]") # Combinations rprint("[bold][italic][underline]All styles[/underline][/italic][/bold]") ``` ### Console Object ```python from rich.console import Console console = Console() # Print with styling console.print("Hello, World!", style="bold green") # Different output streams console_err = Console(stderr=True) # For warnings/errors console_err.print("[red]Error![/red]", stderr=True) # Width control console = Console(width=80) console = Console(force_terminal=True) ``` ## Color Reference ### Named Colors ``` black, red, green, yellow, blue, magenta, cyan, white bright_black (gray), bright_red, bright_green, bright_yellow bright_blue, bright_magenta, bright_cyan, bright_white ``` ### RGB & Hex Colors ```python from rich.color import Color # RGB console.print("[color(255,128,0)]Orange text[/color]") # Hex console.print("[#FF8800]Orange text[/#FF8800]") # With Color class color = Color.from_rgb(255, 128, 0) console.print(f"[{color}]Orange text[/{color}]") ``` ## Text Styles | Style | Description | |-------|-------------| | `bold` | Bold text | | `italic` | Italic text | | `underline` | Underlined | | `strike` | Strikethrough | | `blink` | Blinking text | | `reverse` | Reversed colors | | `dim` | Dimmed text | | `bold not dim` | Bold and not dim | ### Combinations ```python console.print("[bold red]Bold Red[/bold red]") console.print("[bold italic underline]All combined[/bold italic underline]") ``` ## Tables ### Basic Table ```python from rich.console import Console from rich.table import Table console = Console() table = Table(title="Users") table.add_column("Name", style="cyan", no_wrap=True) table.add_column("Email", style="magenta") table.add_column("Role", style="green") table.add_row("Alice", "alice@example.com", "Admin") table.add_row("Bob", "bob@example.com", "User") table.add_row("Charlie", "charlie@example.com", "User") console.print(table) ``` ### Advanced Table ```python from rich.table import Table table = Table( title="Sales Report", show_header=True, header_style="bold magenta", border_style="bright_blue", row_styles=["", "dim"] ) table.add_column("Product", justify="left") table.add_column("Q1", justify="right") table.add_column("Q2", justify="right") table.add_column("Total", justify="right", style="bold green") table.add_row("Widget A", "$10,000", "$12,000", "$22,000") table.add_row("Widget B", "$8,000", "$9,500", "$17,500") table.add_row("Widget C", "$15,000", "$14,000", "$29,000") console.print(table) ``` ## Progress Bars ### Simple Progress ```python from rich.progress import Progress with Progress() as progress: task = progress.add_task("[cyan]Processing...", total=100) for i in range(100): progress.advance(task) # Do work... ``` ### Multiple Tracks ```python from rich.progress import Progress, SpinnerColumn, TextColumn, BarColumn with Progress( SpinnerColumn(), TextColumn("[progress.description]{task.description}"), BarColumn(), TextColumn("[progress.percentage]{task.percentage:>3.0f}%"), console=console ) as progress: task1 = progress.add_task("[red]Download", total=100) task2 = progress.add_task("[green]Process", total=100) for i in range(100): progress.advance(task1) if i % 2 == 0: progress.advance(task2) ``` ### File Download Simulation ```python from rich.progress import Progress, DownloadColumn, TransferSpeedColumn with Progress( TextColumn("[bold blue]{task.description}"), BarColumn(), DownloadColumn(), TransferSpeedColumn(), console=console ) as progress: task = progress.add_task("Download", total=1000000) for chunk in download_chunks(): progress.advance(task, len(chunk)) ``` ## Syntax Highlighting ### Code Highlighting ```python from rich.syntax import Syntax from rich.console import Console console = Console() code = """ def fibonacci(n): if n <= 1: return n return fibonacci(n-1) + fibonacci(n-2) result = fibonacci(10) print(f"Result: {result}") """ syntax = Syntax(code, "python", theme="monokai", line_numbers=True) console.print(syntax) ``` ### Themes ``` monokai, github-dark, dracula, nord, one-dark, vim, etc. ``` ## Panels & Boxes ### Panels ```python from rich.panel import Panel from rich.text import Text console = Console() text = Text("Welcome to my application!", style="bold green") panel = Panel(text, title="Info", border_style="blue") console.print(panel) # Without title console.print(Panel("Simple panel", style="red")) ``` ### Boxes ```python from rich.box import Box, DOUBLE, ROUNDED console.print( "Content in rounded box", box=ROUNDED, border_style="cyan" ) ``` ## Tree View ```python from rich.tree import Tree from rich.console import Console console = Console() tree = Tree("📁 Project", guide_style="bold blue") src = tree.add("📂 src", style="cyan") src.add("📄 main.py") src.add("📂 utils", style="green") src.add("📄 helpers.py") tests = tree.add("📂 tests", style="yellow") tests.add("📄 test_main.py") console.print(tree) ``` ## Markdown Rendering ```python from rich.console import Console from rich.markdown import Markdown console = Console() md = """ # Heading 1 ## Heading 2 This is **bold** and this is *italic*. - List item 1 - List item 2 ```python print("code block") ``` """ console.print(Markdown(md)) ``` ## Logging ```python from rich.logging import RichHandler import logging logging.basicConfig( level=logging.DEBUG, format="%(message)s", handlers=[RichHandler(rich_tracebacks=True)] ) log = logging.getLogger("myapp") log.debug("Debug message") log.info("Info message") log.warning("Warning message") log.error("Error message") ``` ## Live Display ### Dynamic Updates ```python from rich.live import Live from rich.table import Table with Live(build_table(), refresh_per_second=4) as live: for _ in range(10): # Update table live.update(build_table()) ``` ### Status Spinner ```python from rich.console import Console from rich.progress import Progress, SpinnerColumn console = Console() with console.status("[bold green]Working on something..."): time.sleep(2) console.print("[green]Done!") ``` ## Pretty Printing ### Dict/Object Pretty Print ```python from rich.pretty import pprint from rich.console import Console console = Console() data = { "name": "Alice", "age": 30, "skills": ["Python", "JavaScript"], "active": True } pprint(data, console=console, expand_all=True) ``` ## Bar Charts ```python from rich.console import Console from rich.bar import Bar console = Console() console.print(Bar(50, width=30, color="cyan")) ``` ## Column Layout ```python from rich.console import Console from rich.columns import Columns console = Console() columns = Columns([ "[bold]Name[/bold]\nAlice\nBob\nCharlie", "[bold]Role[/bold]\nAdmin\nUser\nUser" ], equal=True, expand=True) console.print(columns) ``` ## Best Practices 1. **Use Console object** for consistent styling 2. **Close tags properly** `[/red]` or use context manager 3. **Test terminal compatibility** - not all terminals support all styles 4. **Respect user preferences** - check `Console.options.no_color` 5. **Width matters** - use `console.width` for responsive layouts 6. **Combine with Click/Typer** for complete CLI applications
Auf GitHub ansehen