首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Colorama 使用教程

Colorama 使用教程

作者头像
一个平凡而乐于分享的小比特
发布2026-02-02 16:40:30
发布2026-02-02 16:40:30
840
举报

🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习 🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发 ❄️作者主页:一个平凡而乐于分享的小比特的个人主页 ✨收录专栏:Python,本专栏为记录项目中用到常用python库 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

在这里插入图片描述
在这里插入图片描述

Colorama 使用教程

Colorama 是一个 Python 库,用于在终端中输出彩色文本和设置文本样式。它支持跨平台(Windows/Linux/macOS)的彩色终端输出。

一、安装 Colorama

代码语言:javascript
复制
pip install colorama

二、基本使用

代码语言:javascript
复制
import colorama
from colorama import Fore, Back, Style

# 初始化 Colorama(Windows 必需,其他平台可选)
colorama.init()

print(f"{Fore.RED}这是红色文本{Style.RESET_ALL}")
print(f"{Fore.GREEN}这是绿色文本{Style.RESET_ALL}")
print(f"{Fore.BLUE}这是蓝色文本{Style.RESET_ALL}")

# 恢复默认设置(在程序结束时调用)
colorama.deinit()

三、颜色常量

Colorama 提供了以下前景色(文本颜色)常量:

代码语言:javascript
复制
from colorama import Fore

# 基本颜色
print(f"{Fore.BLACK}黑色文本")
print(f"{Fore.RED}红色文本")
print(f"{Fore.GREEN}绿色文本")
print(f"{Fore.YELLOW}黄色文本")
print(f"{Fore.BLUE}蓝色文本")
print(f"{Fore.MAGENTA}洋红色文本")
print(f"{Fore.CYAN}青色文本")
print(f"{Fore.WHITE}白色文本")

# 亮色版本
print(f"{Fore.LIGHTBLACK_EX}亮黑色文本")
print(f"{Fore.LIGHTRED_EX}亮红色文本")
print(f"{Fore.LIGHTGREEN_EX}亮绿色文本")
print(f"{Fore.LIGHTYELLOW_EX}亮黄色文本")
print(f"{Fore.LIGHTBLUE_EX}亮蓝色文本")
print(f"{Fore.LIGHTMAGENTA_EX}亮洋红色文本")
print(f"{Fore.LIGHTCYAN_EX}亮青色文本")
print(f"{Fore.LIGHTWHITE_EX}亮白色文本")

四、样式常量

代码语言:javascript
复制
from colorama import Style

print(f"{Style.DIM}暗淡文本{Style.RESET_ALL}")
print(f"{Style.NORMAL}正常文本{Style.RESET_ALL}")
print(f"{Style.BRIGHT}明亮文本{Style.RESET_ALL}")

# 重置所有样式
print(f"{Style.RESET_ALL}已重置样式")

五、背景颜色

代码语言:javascript
复制
from colorama import Back

# 基本背景色
print(f"{Back.BLACK}黑色背景{Back.RESET}")
print(f"{Back.RED}红色背景{Back.RESET}")
print(f"{Back.GREEN}绿色背景{Back.RESET}")
print(f"{Back.YELLOW}黄色背景{Back.RESET}")
print(f"{Back.BLUE}蓝色背景{Back.RESET}")
print(f"{Back.MAGENTA}洋红色背景{Back.RESET}")
print(f"{Back.CYAN}青色背景{Back.RESET}")
print(f"{Back.WHITE}白色背景{Back.RESET}")

# 亮色背景版本
print(f"{Back.LIGHTBLACK_EX}亮黑色背景{Back.RESET}")
print(f"{Back.LIGHTRED_EX}亮红色背景{Back.RESET}")
print(f"{Back.LIGHTGREEN_EX}亮绿色背景{Back.RESET}")
print(f"{Back.LIGHTYELLOW_EX}亮黄色背景{Back.RESET}")
print(f"{Back.LIGHTBLUE_EX}亮蓝色背景{Back.RESET}")
print(f"{Back.LIGHTMAGENTA_EX}亮洋红色背景{Back.RESET}")
print(f"{Back.LIGHTCYAN_EX}亮青色背景{Back.RESET}")
print(f"{Back.LIGHTWHITE_EX}亮白色背景{Back.RESET}")

# 组合前景色和背景色
print(f"{Fore.WHITE}{Back.RED}白字红底文本{Style.RESET_ALL}")

六、重置样式

有三种方式重置样式:

代码语言:javascript
复制
from colorama import Fore, Back, Style

# 方法1:这会重置前景色、背景色和所有样式
print(f"{Fore.RED}{Back.GREEN}{Style.BRIGHT}彩色文本{Style.RESET_ALL}正常文本")

# 方法2:分别重置
print(f"{Fore.RED}红色文本{Fore.RESET}正常文本")
print(f"{Back.GREEN}绿色背景{Back.RESET}正常背景")

# 方法3:重置样式到正常(不重置颜色)
print(f"{Style.BRIGHT}加粗文本{Style.NORMAL}正常样式")

七、初始化与重置

自动重置模式(默认)
代码语言:javascript
复制
import colorama
from colorama import Fore

# 自动重置模式:在每次打印后自动重置样式
colorama.init(autoreset=True)

print(f"{Fore.RED}红色文本")  # 自动重置,下一行不会受影响
print("正常文本")

colorama.deinit()
手动重置模式
代码语言:javascript
复制
import colorama
from colorama import Fore

# 手动重置模式:需要显式重置样式
colorama.init(autoreset=False)

print(f"{Fore.RED}红色文本")  # 不会自动重置
print("这行也会是红色文本")  # 仍然保持红色

print(f"{Fore.RESET}")  # 手动重置
print("现在正常了")

colorama.deinit()
禁用颜色
代码语言:javascript
复制
import colorama
from colorama import Fore

# strip=True 会移除所有颜色代码(适用于重定向到文件时)
colorama.init(strip=True)

print(f"{Fore.RED}这行不会有颜色(代码被移除)")

colorama.deinit()

八、高级用法

1. 使用 with 语句
代码语言:javascript
复制
from colorama import init, deinit

with init():
    # 在这里使用 Colorama
    print(f"{Fore.GREEN}在 with 块中使用")
    # 退出 with 块后自动调用 deinit()
2. 创建彩色输出函数
代码语言:javascript
复制
from colorama import Fore, Style

def print_success(message):
    print(f"{Fore.GREEN}✓ {message}{Style.RESET_ALL}")

def print_error(message):
    print(f"{Fore.RED}✗ {message}{Style.RESET_ALL}")

def print_warning(message):
    print(f"{Fore.YELLOW}⚠ {message}{Style.RESET_ALL}")

def print_info(message):
    print(f"{Fore.CYAN}ℹ {message}{Style.RESET_ALL}")

# 使用自定义函数
print_success("操作成功完成")
print_error("发生了一个错误")
print_warning("这是一个警告")
print_info("这是一条信息")
3. 进度指示器
代码语言:javascript
复制
import time
from colorama import Fore, Style

def progress_bar(progress, total, width=50):
    percent = progress / total
    filled = int(width * percent)
    bar = "█" * filled + "-" * (width - filled)
    
    color = Fore.GREEN if percent > 0.7 else Fore.YELLOW if percent > 0.3 else Fore.RED
    
    print(f"\r{color}[{bar}] {percent:.1%}{Style.RESET_ALL}", end="", flush=True)

# 模拟进度
total = 100
for i in range(total + 1):
    progress_bar(i, total)
    time.sleep(0.05)

print()  # 换行

九、实用示例

示例1:彩色日志系统
代码语言:javascript
复制
import logging
from colorama import Fore, Style
import colorama

colorama.init()

class ColoredFormatter(logging.Formatter):
    """自定义彩色日志格式化器"""
    
    COLORS = {
        'DEBUG': Fore.CYAN,
        'INFO': Fore.GREEN,
        'WARNING': Fore.YELLOW,
        'ERROR': Fore.RED,
        'CRITICAL': Fore.RED + Style.BRIGHT,
    }
    
    def format(self, record):
        log_color = self.COLORS.get(record.levelname, '')
        record.levelname = f"{log_color}{record.levelname}{Style.RESET_ALL}"
        record.msg = f"{log_color}{record.msg}{Style.RESET_ALL}"
        return super().format(record)

# 设置日志
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

handler = logging.StreamHandler()
formatter = ColoredFormatter('%(levelname)s: %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)

# 测试日志
logger.debug("调试信息")
logger.info("普通信息")
logger.warning("警告信息")
logger.error("错误信息")
logger.critical("严重错误")
示例2:彩色表格输出
代码语言:javascript
复制
from colorama import Fore, Back, Style

def print_table(data, headers=None):
    """打印彩色表格"""
    
    if headers:
        data = [headers] + data
    
    # 计算每列的最大宽度
    col_widths = []
    for col in range(len(data[0])):
        col_width = max(len(str(row[col])) for row in data)
        col_widths.append(col_width)
    
    # 打印表头(如果有)
    if headers:
        header_row = " | ".join(
            f"{Fore.YELLOW}{Style.BRIGHT}{str(item):<{col_widths[i]}}{Style.RESET_ALL}"
            for i, item in enumerate(headers)
        )
        print(header_row)
        print("-" * (sum(col_widths) + 3 * (len(col_widths) - 1)))
    
    # 打印数据行
    for row in data[len(headers) if headers else 0:]:
        colored_row = []
        for i, item in enumerate(row):
            color = Fore.GREEN if i % 2 == 0 else Fore.CYAN
            colored_row.append(f"{color}{str(item):<{col_widths[i]}}{Style.RESET_ALL}")
        
        print(" | ".join(colored_row))

# 示例数据
headers = ["名称", "价格", "库存", "状态"]
data = [
    ["苹果", 5.99, 100, "有货"],
    ["香蕉", 3.49, 50, "有货"],
    ["橙子", 4.99, 0, "缺货"],
    ["葡萄", 7.99, 25, "有货"],
]

print_table(data, headers)
示例3:命令行菜单
代码语言:javascript
复制
from colorama import Fore, Style
import sys

def print_menu(options, selected_index=0):
    """打印彩色菜单"""
    
    for i, option in enumerate(options):
        if i == selected_index:
            print(f"{Fore.GREEN}{Style.BRIGHT}> {option}{Style.RESET_ALL}")
        else:
            print(f"  {option}")

def interactive_menu(options):
    """交互式菜单选择"""
    
    selected = 0
    
    while True:
        # 清屏(跨平台)
        print("\033c", end="")
        
        print(f"{Fore.CYAN}{Style.BRIGHT}请选择操作:{Style.RESET_ALL}")
        print_menu(options, selected)
        
        # 获取用户输入
        key = input("\n使用 ↑ ↓ 选择,回车确认: ")
        
        if key == "\x1b[A":  # 上箭头
            selected = (selected - 1) % len(options)
        elif key == "\x1b[B":  # 下箭头
            selected = (selected + 1) % len(options)
        elif key == "":
            return selected

# 菜单选项
menu_options = [
    "1. 开始新游戏",
    "2. 加载游戏",
    "3. 设置",
    "4. 关于",
    "5. 退出"
]

# 运行菜单(注意:箭头键检测在某些终端可能需要特殊处理)
# 这里简化为演示概念
for i, option in enumerate(menu_options):
    if i == 1:  # 模拟选中第二项
        print(f"{Fore.GREEN}{Style.BRIGHT}> {option}{Style.RESET_ALL}")
    else:
        print(f"  {option}")

注意事项

  1. Windows 系统:必须调用 colorama.init() 来启用 ANSI 转义序列支持
  2. 自动重置:使用 autoreset=True 可以避免颜色泄漏到后续输出
  3. 文件重定向:当输出被重定向到文件时,使用 strip=True 移除颜色代码
  4. 性能:频繁的颜色切换可能影响性能,在大量输出时注意
  5. 兼容性:不是所有终端都支持所有颜色,尽量使用基本颜色确保兼容性
  6. 嵌套使用:颜色代码可以嵌套,但要注意正确的重置顺序

总结

Colorama 是一个简单而强大的库,可以为你的命令行程序添加彩色输出。通过合理使用前景色、背景色和样式,你可以创建出更加友好和直观的命令行界面。记得在 Windows 上正确初始化和重置,并考虑使用 autoreset=True 来简化代码管理。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Colorama 使用教程
    • 一、安装 Colorama
    • 二、基本使用
    • 三、颜色常量
    • 四、样式常量
    • 五、背景颜色
    • 六、重置样式
    • 七、初始化与重置
      • 自动重置模式(默认)
      • 手动重置模式
      • 禁用颜色
    • 八、高级用法
      • 1. 使用 with 语句
      • 2. 创建彩色输出函数
      • 3. 进度指示器
    • 九、实用示例
      • 示例1:彩色日志系统
      • 示例2:彩色表格输出
      • 示例3:命令行菜单
    • 注意事项
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档