news 2026/6/9 19:45:42

Colorama 使用教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Colorama 使用教程

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

Colorama 使用教程

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

一、安装 Colorama

pipinstallcolorama

二、基本使用

importcoloramafromcoloramaimportFore,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 提供了以下前景色(文本颜色)常量:

fromcoloramaimportFore# 基本颜色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}亮白色文本")

四、样式常量

fromcoloramaimportStyleprint(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}已重置样式")

五、背景颜色

fromcoloramaimportBack# 基本背景色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}")

六、重置样式

有三种方式重置样式:

fromcoloramaimportFore,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}正常样式")

七、初始化与重置

自动重置模式(默认)

importcoloramafromcoloramaimportFore# 自动重置模式:在每次打印后自动重置样式colorama.init(autoreset=True)print(f"{Fore.RED}红色文本")# 自动重置,下一行不会受影响print("正常文本")colorama.deinit()

手动重置模式

importcoloramafromcoloramaimportFore# 手动重置模式:需要显式重置样式colorama.init(autoreset=False)print(f"{Fore.RED}红色文本")# 不会自动重置print("这行也会是红色文本")# 仍然保持红色print(f"{Fore.RESET}")# 手动重置print("现在正常了")colorama.deinit()

禁用颜色

importcoloramafromcoloramaimportFore# strip=True 会移除所有颜色代码(适用于重定向到文件时)colorama.init(strip=True)print(f"{Fore.RED}这行不会有颜色(代码被移除)")colorama.deinit()

八、高级用法

1. 使用 with 语句

fromcoloramaimportinit,deinitwithinit():# 在这里使用 Coloramaprint(f"{Fore.GREEN}在 with 块中使用")# 退出 with 块后自动调用 deinit()

2. 创建彩色输出函数

fromcoloramaimportFore,Styledefprint_success(message):print(f"{Fore.GREEN}{message}{Style.RESET_ALL}")defprint_error(message):print(f"{Fore.RED}{message}{Style.RESET_ALL}")defprint_warning(message):print(f"{Fore.YELLOW}{message}{Style.RESET_ALL}")defprint_info(message):print(f"{Fore.CYAN}{message}{Style.RESET_ALL}")# 使用自定义函数print_success("操作成功完成")print_error("发生了一个错误")print_warning("这是一个警告")print_info("这是一条信息")

3. 进度指示器

importtimefromcoloramaimportFore,Styledefprogress_bar(progress,total,width=50):percent=progress/total filled=int(width*percent)bar="█"*filled+"-"*(width-filled)color=Fore.GREENifpercent>0.7elseFore.YELLOWifpercent>0.3elseFore.REDprint(f"\r{color}[{bar}]{percent:.1%}{Style.RESET_ALL}",end="",flush=True)# 模拟进度total=100foriinrange(total+1):progress_bar(i,total)time.sleep(0.05)print()# 换行

九、实用示例

示例1:彩色日志系统

importloggingfromcoloramaimportFore,Styleimportcolorama colorama.init()classColoredFormatter(logging.Formatter):"""自定义彩色日志格式化器"""COLORS={'DEBUG':Fore.CYAN,'INFO':Fore.GREEN,'WARNING':Fore.YELLOW,'ERROR':Fore.RED,'CRITICAL':Fore.RED+Style.BRIGHT,}defformat(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}"returnsuper().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:彩色表格输出

fromcoloramaimportFore,Back,Styledefprint_table(data,headers=None):"""打印彩色表格"""ifheaders:data=[headers]+data# 计算每列的最大宽度col_widths=[]forcolinrange(len(data[0])):col_width=max(len(str(row[col]))forrowindata)col_widths.append(col_width)# 打印表头(如果有)ifheaders:header_row=" | ".join(f"{Fore.YELLOW}{Style.BRIGHT}{str(item):<{col_widths[i]}}{Style.RESET_ALL}"fori,iteminenumerate(headers))print(header_row)print("-"*(sum(col_widths)+3*(len(col_widths)-1)))# 打印数据行forrowindata[len(headers)ifheaderselse0:]:colored_row=[]fori,iteminenumerate(row):color=Fore.GREENifi%2==0elseFore.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:命令行菜单

fromcoloramaimportFore,Styleimportsysdefprint_menu(options,selected_index=0):"""打印彩色菜单"""fori,optioninenumerate(options):ifi==selected_index:print(f"{Fore.GREEN}{Style.BRIGHT}>{option}{Style.RESET_ALL}")else:print(f"{option}")definteractive_menu(options):"""交互式菜单选择"""selected=0whileTrue:# 清屏(跨平台)print("\033c",end="")print(f"{Fore.CYAN}{Style.BRIGHT}请选择操作:{Style.RESET_ALL}")print_menu(options,selected)# 获取用户输入key=input("\n使用 ↑ ↓ 选择,回车确认: ")ifkey=="\x1b[A":# 上箭头selected=(selected-1)%len(options)elifkey=="\x1b[B":# 下箭头selected=(selected+1)%len(options)elifkey=="":returnselected# 菜单选项menu_options=["1. 开始新游戏","2. 加载游戏","3. 设置","4. 关于","5. 退出"]# 运行菜单(注意:箭头键检测在某些终端可能需要特殊处理)# 这里简化为演示概念fori,optioninenumerate(menu_options):ifi==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来简化代码管理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 15:00:33

Dify如何维持长篇叙事的一致性?

Dify如何维持长篇叙事的一致性&#xff1f; 在内容创作日益依赖AI的今天&#xff0c;一个核心问题逐渐浮现&#xff1a;当大语言模型&#xff08;LLM&#xff09;被用来撰写小说、生成报告或运营长期对话系统时&#xff0c;如何避免“写到第三章就忘了主角叫什么”这种尴尬&…

作者头像 李华
网站建设 2026/6/6 7:58:33

洛雪音乐六音音源终极修复指南:简单三步解决音乐播放问题

洛雪音乐六音音源终极修复指南&#xff1a;简单三步解决音乐播放问题 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 还在为洛雪音乐升级后无法播放音乐而烦恼吗&#xff1f;今天为大家带来一款完…

作者头像 李华
网站建设 2026/6/6 6:52:27

【Vue知识点总结】.sync修饰符

在 Vue.js 的组件化开发中,父子组件间的通信遵循“单向数据流”原则:父组件可以向子组件传递数据,但子组件不能直接修改从父组件接收到的 props。然而,在某些场景下,我们确实需要子组件能够通知父组件更新数据。.sync 修饰符就是 Vue 2 中为了简化这种需求而提供的一个语法…

作者头像 李华
网站建设 2026/6/6 8:20:06

ncmdump终极使用指南:免费解锁网易云音乐加密格式

ncmdump终极使用指南&#xff1a;免费解锁网易云音乐加密格式 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为下载的网易云音乐.ncm格式文件无法播放而烦恼吗&#xff1f;ncmdump就是你的完美解决方案&#xff01;这款免费工具…

作者头像 李华
网站建设 2026/6/9 18:40:29

如何快速使用ncmdump工具:网易云音乐格式转换完整指南

如何快速使用ncmdump工具&#xff1a;网易云音乐格式转换完整指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 在数字音乐时代&#xff0c;网易云音乐为了保护版权采用了特殊的ncm加密格式&#xff0c;这让用户无法直接在其他设备…

作者头像 李华
网站建设 2026/6/7 23:24:47

React Native电商界面UI组件复用技巧详解

React Native电商UI组件复用实战&#xff1a;从一张商品卡讲透高效开发之道你有没有遇到过这样的场景&#xff1f;首页要做推荐位&#xff0c;产品经理说&#xff1a;“把搜索页那个商品卡片拿过来改一改就行。”结果你打开代码一看——两个页面的卡片长得差不多&#xff0c;但…

作者头像 李华