Rich库演示教程
Rich库演示教程
Rich是一个Python库,用于在终端中创建丰富的文本和美观的格式。它提供了许多功能,包括:
- 彩色文本和样式
- 表格
- 进度条
- 面板和布局
- 语法高亮
- 树形结构显示
让我们来逐一演示这些功能!
# 首先导入rich库
import rich
from rich.console import Console
from rich.text import Text
from rich.table import Table
from rich.progress import Progress, track
from rich.panel import Panel
from rich.columns import Columns
from rich.syntax import Syntax
from rich.tree import Tree
from rich.layout import Layout
from rich import print as rprint# 创建一个控制台对象
console = Console()# 显示Rich库信息
console.print("✅ Rich库导入成功!", style="bold green")
console.print("现在让我们开始演示Rich的各种功能...", style="blue")
1. 文本样式和颜色
# 演示各种文本样式
console.print("这是普通文本")
console.print("这是粗体文本", style="bold")
console.print("这是斜体文本", style="italic")
console.print("这是下划线文本", style="underline")
console.print("这是删除线文本", style="strike")# 演示颜色
console.print("红色文本", style="red")
console.print("绿色文本", style="green")
console.print("蓝色文本", style="blue")
console.print("黄色文本", style="yellow")
console.print("紫色文本", style="magenta")
console.print("青色文本", style="cyan")# 组合样式
console.print("粗体红色文本", style="bold red")
console.print("斜体蓝色下划线文本", style="italic blue underline")# 使用RGB颜色
console.print("自定义RGB颜色", style="rgb(255,165,0)")# 使用背景色
console.print("白色文字红色背景", style="white on red")
console.print("黑色文字黄色背景", style="black on yellow")
2. 表格功能
# 创建一个简单的表格
table = Table(title="学生成绩表")# 添加列
table.add_column("姓名", justify="left", style="cyan", no_wrap=True)
table.add_column("年龄", justify="center", style="magenta")
table.add_column("科目", justify="center", style="green")
table.add_column("成绩", justify="right", style="yellow")# 添加行
table.add_row("张三", "20", "数学", "95")
table.add_row("李四", "21", "物理", "88")
table.add_row("王五", "19", "化学", "92")
table.add_row("赵六", "22", "英语", "87")console.print(table)print("\n" + "="*50 + "\n")# 创建一个更复杂的表格
table2 = Table(show_header=True, header_style="bold blue")
table2.add_column("产品", style="dim", width=12)
table2.add_column("价格", justify="right")
table2.add_column("库存", justify="center")
table2.add_column("状态", justify="center")table2.add_row("笔记本电脑", "¥5,999", "15", "[green]有货[/green]")
table2.add_row("智能手机", "¥2,999", "0", "[red]缺货[/red]")
table2.add_row("平板电脑", "¥1,999", "8", "[green]有货[/green]")
table2.add_row("智能手表", "¥1,299", "3", "[yellow]库存不足[/yellow]")console.print(table2)
3. 面板和布局
# 创建简单面板
panel1 = Panel("这是一个简单的面板", title="信息面板", border_style="blue")
console.print(panel1)print()# 创建带样式的面板
panel2 = Panel("这是一个[bold red]重要[/bold red]的通知!\n\n请注意:\n• 系统将在今晚进行维护\n• 预计维护时间:2小时\n• 如有问题请联系技术支持",title="[bold red]系统通知[/bold red]",border_style="red",padding=(1, 2)
)
console.print(panel2)print()# 创建多个面板的列布局
panels = [Panel("面板 1\n内容区域", title="左侧", border_style="green"),Panel("面板 2\n更多内容", title="中间", border_style="yellow"),Panel("面板 3\n最后内容", title="右侧", border_style="blue")
]columns = Columns(panels, equal=True, expand=True)
console.print(columns)
4. 进度条
import time# 简单的进度条演示
console.print("演示简单进度条:")
for i in track(range(20), description="处理中..."):time.sleep(0.1) # 模拟工作print()# 多个进度条
console.print("演示多个进度条:")
with Progress() as progress:task1 = progress.add_task("[red]下载文件...", total=100)task2 = progress.add_task("[green]处理数据...", total=80)task3 = progress.add_task("[cyan]上传结果...", total=60)while not progress.finished:progress.update(task1, advance=0.9)progress.update(task2, advance=0.6)progress.update(task3, advance=0.3)time.sleep(0.02)console.print("✅ 所有任务完成!", style="bold green")
5. 语法高亮
# Python代码语法高亮
python_code = '''
def fibonacci(n):"""计算斐波那契数列"""if n <= 1:return nelse:return fibonacci(n-1) + fibonacci(n-2)# 测试函数
for i in range(10):print(f"fibonacci({i}) = {fibonacci(i)}")
'''syntax = Syntax(python_code, "python", theme="monokai", line_numbers=True)
console.print(syntax)print("\n" + "="*50 + "\n")# JavaScript代码语法高亮
js_code = '''
function quickSort(arr) {if (arr.length <= 1) {return arr;}const pivot = arr[Math.floor(arr.length / 2)];const left = arr.filter(x => x < pivot);const middle = arr.filter(x => x === pivot);const right = arr.filter(x => x > pivot);return [...quickSort(left), ...middle, ...quickSort(right)];
}// 测试
const numbers = [3, 6, 8, 10, 1, 2, 1];
console.log(quickSort(numbers));
'''syntax_js = Syntax(js_code, "javascript", theme="github-dark", line_numbers=True)
console.print(syntax_js)
6. 树形结构
# 创建文件系统树形结构
tree = Tree("📁 项目根目录")# 添加子目录和文件
src_branch = tree.add("📁 src")
src_branch.add("📄 main.py")
src_branch.add("📄 config.py")
src_branch.add("📄 utils.py")models_branch = src_branch.add("📁 models")
models_branch.add("📄 user.py")
models_branch.add("📄 product.py")views_branch = src_branch.add("📁 views")
views_branch.add("📄 home.py")
views_branch.add("📄 admin.py")# 添加其他目录
tests_branch = tree.add("📁 tests")
tests_branch.add("📄 test_main.py")
tests_branch.add("📄 test_utils.py")docs_branch = tree.add("📁 docs")
docs_branch.add("📄 README.md")
docs_branch.add("📄 API.md")# 添加根目录文件
tree.add("📄 requirements.txt")
tree.add("📄 .gitignore")
tree.add("📄 setup.py")console.print(tree)print("\n" + "="*50 + "\n")# 创建组织架构树
org_tree = Tree("🏢 科技公司")ceo_branch = org_tree.add("👨💼 CEO")tech_branch = ceo_branch.add("💻 技术部")
tech_branch.add("👨💻 前端开发团队")
tech_branch.add("👩💻 后端开发团队")
tech_branch.add("🔧 运维团队")product_branch = ceo_branch.add("📊 产品部")
product_branch.add("📋 产品经理")
product_branch.add("🎨 UI/UX设计师")marketing_branch = ceo_branch.add("📢 市场部")
marketing_branch.add("📈 市场推广")
marketing_branch.add("🤝 商务合作")console.print(org_tree)
7. Rich的print函数
# Rich的print函数可以直接处理标记语言
rprint("Hello [bold magenta]World[/bold magenta]!")
rprint("这是 [bold red]粗体红色[/bold red] 文本")
rprint("这是 [italic blue]斜体蓝色[/italic blue] 文本")# 打印Python对象,自动美化格式
data = {"name": "张三","age": 25,"skills": ["Python", "JavaScript", "React"],"address": {"city": "北京","district": "朝阳区"},"is_active": True,"score": 95.5
}rprint("Python字典对象:")
rprint(data)print("\n" + "="*30 + "\n")# 打印列表
numbers = [1, 2, 3, 4, 5]
colors = ["red", "green", "blue", "yellow"]rprint("数字列表:", numbers)
rprint("颜色列表:", colors)print("\n" + "="*30 + "\n")# 使用emoji和特殊字符
rprint("🎉 恭喜!任务完成 ✅")
rprint("⚠️ 警告:请检查配置文件")
rprint("❌ 错误:连接失败")
rprint("📊 数据统计:[green]成功率 98%[/green]")
8. 总结
# 创建一个总结面板
summary_content = """
🎯 Rich库主要功能总结:✅ 文本样式和颜色• 支持粗体、斜体、下划线等样式• 丰富的颜色选择(预定义颜色、RGB、背景色)✅ 表格功能• 自动格式化的表格• 支持列对齐、样式定制• 可以嵌入富文本内容✅ 面板和布局• 创建带边框的面板• 支持多列布局• 灵活的内容组织✅ 进度条• 简单易用的进度显示• 支持多任务并行显示• 自定义样式和描述✅ 语法高亮• 支持多种编程语言• 多种主题选择• 行号显示✅ 树形结构• 直观的层次结构显示• 支持emoji和特殊字符• 适合文件系统、组织架构等✅ 增强的print函数• 支持标记语言• 自动美化Python对象• 直接支持emoji和特殊字符🚀 Rich让命令行输出变得更加美观和专业!
"""final_panel = Panel(summary_content,title="[bold blue]Rich库功能总结[/bold blue]",border_style="blue",padding=(1, 2)
)console.print(final_panel)# 最后的感谢信息
console.print("\n🎉 [bold green]Rich库演示完成![/bold green]", justify="center")
console.print("感谢您的观看,希望这个演示对您有帮助! 😊", justify="center", style="italic cyan")