【Python】告别手动上色!一个脚本让你的终端输出自动“智能高亮” 一、项目简介你是不是也有过这样的经历调试一段复杂的Python程序终端里密密麻麻的日志输出全是清一色的白底黑字。错误信息、文件路径、变量值、IP地址……所有内容混在一起想找到关键信息全靠CtrlF市面上大多数终端着色方案要么需要你手动给每个print()指定颜色比如colored(text, red)-15要么依赖colorama或rich这类库逐行配置-15。本质上还是“手动上色”——每输出一行你就得想一遍“这行该用什么颜色”。但如果有一种工具什么都不用你做导入之后自动识别输出内容中的文件路径、关键字、变量名、数字、IP地址然后分别用不同颜色高亮显示呢自动识别才是真正的“智能高亮”这个脚本的核心思路是重定向Python的标准输出流。你不需要改动任何现有的print()代码只需要导入并启用它就会在后台默默接管所有输出-。它的识别逻辑非常细致路径和文件名自动染成亮绿色LIGHT_GREEN让你一眼定位文件引用内置或错误关键字如Error、Exception自动染成亮红色LIGHT_RED紧急信息绝不错过操作类关键字如start、stop、success用品红色MAGENTA区分名字类关键字用青色CYAN突出变量名和普通字母用亮蓝色LIGHT_BLUE数字、IP地址IPv4/IPv6、版本号统一用红色RED高亮各种符号则用亮黄色LIGHT_YELLOW点缀。更重要的是它同时兼容Unix和Windows路径格式IPv4/IPv6地址也能准确识别-。你甚至可以通过配置文件自定义想要高亮的关键字灵活性拉满。为什么这比传统方案更“新”传统的终端着色库解决的是“怎么上色”的问题而这个脚本解决的是“该给什么上色”的问题。前者是工具后者是智能。试想一下你写了一个自动化部署脚本输出里有文件路径、有状态码、有IP地址、有错误提示。如果每行都是纯文本排查问题如同大海捞针。但有了这个自动着色工具错误是红色的、路径是绿色的、IP是红色的——信息的层级和类型一目了然可读性瞬间提升一个档次-。适用场景日志查看海量日志中快速定位异常调试输出变量值、文件路径自动高亮CLI工具开发提升用户体验让输出更专业CI/CD流水线构建输出自动分类着色。终端不应该是黑白的。让颜色替你说话让信息自己“跳”出来——这才是自动化工具该有的样子。二、自动化终端输出-颜色显示支持关键字自定义可以自定义 内置或错误关键字、操作类关键字、名字类关键字、如下图所示支持颜色自定义实现代码示例# -*- coding: utf-8 -*- Time : 2026/6/12 20:35 Author : TYH File : auto_display_color.py Software : PyCharm # 导包importreimportosimportsysimporttimeimportjson# 全局变量key_words_dict{}operate_words_dict{}org_stdoutsys.stdout terminal_print_txt./files/print_color00_terminal_print.txt# 函数defauthor_info(): 打印注意事项 返回项目作者及版本信息 passdefcolor_info(): 返回颜色配置说明信息 passdefdict2json_v2(save_json:str,dict_value:dict): dict保存为json文件 passdefget_dict_all_values(d): 递归获取字典中所有值并去重 :param d: 输入字典可以包含嵌套字典和列表 :return: 去重后的值列表 passdefjson2dict_v2(json_file:str): 读取json文件为dict passdefprint_color(text,Foreground31,Display1,Background48): 输出字体颜色的独立函数使用原始stdout 输出字体颜色的函数,默认为红色字体,astr:输出的字符串或数字,Display:显示方式,Foreground:前景色,Background背景色, pass# 类classAnsiColor: ANSI颜色码封装类提供便捷的颜色输出方法 # 类属性BLACK[30mRED[31mGREEN[32mYELLOW[33mBLUE[34mMAGENTA[35mCYAN[36mWHITE[37mLIGHT_BLACK[90mLIGHT_RED[91mLIGHT_GREEN[92mLIGHT_YELLOW[93mLIGHT_BLUE[94mLIGHT_MAGENTA[95mLIGHT_CYAN[96mLIGHT_WHITE[97mBOLD[1mDIM[2mITALIC[3mUNDERLINE[4mRESET[0mERROR[31mSUCCESS[32mWARNING[33mINFO[34mDEBUG[35mPATH[36m# 类方法classmethoddefwrap(cls,text:str,*styles)-str: 包装文本应用多种样式 将给定的样式码包裹在文本前后自动添加重置码确保样式不会影响后续文本。 :param text: 要处理的文本 :param styles: 样式代码可多个 :return: 带样式的文本 passclassmethoddefcolorize(cls,text:str,color:str)-str: 为文本应用颜色 :param text: 要处理的文本 :param color: 颜色代码 :return: 带颜色的文本 passclassmethoddeferror(cls,text:str)-str: 错误样式 passclassmethoddefsuccess(cls,text:str)-str: 成功样式 passclassmethoddefwarning(cls,text:str)-str: 警告样式 passclassmethoddefinfo(cls,text:str)-str: 信息样式 passclassmethoddefdebug(cls,text:str)-str: 调试样式 passclassmethoddefpath(cls,text:str)-str: 路径样式 passclassColorStream: 自定义输出流 - 根据规则自动为文本着色, 该类继承文件对象的接口write, flush 重定向 sys.stdout 后所有 print() 输出都会经过着色处理。 路径和文件名颜色(path): 亮绿色 LIGHT_GREEN(92) 内置或错误关键字颜色(key): 亮红色 LIGHT_RED(91) 操作关键字(operate): 品红色 MAGENTA(33) 名字关键字(name): 青色 CYAN(36) 符合变量名或字母(letter): 亮蓝色 LIGHT_BLUE(94) 数字或IP或版本号(number): 红色 RED(31) 符号(symbol): 亮黄色 LIGHT_YELLOW(93) # 类属性KEY_WORDS[]OPERATE_WORDS[]NAME_WORDS[]# 内置方法def__init__(self,streamsys.stdout,key_wordsNone,operate_wordsNone,name_wordsNone,write_flagFalse,add_key_flagTrue,add_operate_flagTrue,add_name_flagTrue):passdef__del__(self): 析构方法 - 对象销毁时自动调用, 确保文件句柄被正确关闭防止资源泄漏。 注意在某些异常情况下如循环引用可能不会调用。 pass# 实例方法defwrite_txt(self,content,value):passdefget_words_pattern(self,key_words): 单个独立函数自动区分纯字母/中文生成带命名分组的正则表达式 passdef_build_pattern(self)-re.Pattern: 构建完整的正则表达式模式 模式按照优先级从高到低排列正则引擎会优先匹配靠前的模式。 使用命名捕获组 (?Pname...) 便于识别匹配类型。 返回值: re.Pattern: 编译后的正则表达式对象 passdef_colorize_mixed_value_letter(self,value:str)-str: 为混合类型文本着色变量名场景 将文本按字符类型分组不同类型使用不同颜色 - 字母/数字/下划线 → 亮蓝色 - 其他符号 → 亮黄色 passdef_colorize_mixed_value_number(self,value:str)-str: 为混合类型文本着色数字场景 将文本按字符类型分组不同类型使用不同颜色 - 数字/字母 → 红色 - 其他符号如 -, . → 亮黄色 passdefwrite(self,text:str): 重写的写入方法 - 对文本进行着色处理 这是 ColorStream 的核心方法所有 print() 调用最终都会执行此方法。 通过正则匹配将文本分段对各段应用不同颜色。 passdefflush(self): 刷新输出流缓冲区, 确保内容立即输出到终端类似于文件对象的 flush() 方法。 passdefprint_color(self,text,Foreground31,Display1,Background48): 自定义颜色输出方法, 使用 ANSI 转义序列自定义文本颜色。 text: 要输出的文本 display: 显示样式代码 - 1: 加粗 - 2: 暗淡 - 3: 斜体 - 4: 下划线 background: 背景色代码默认48为默认背景 pass三、导入并测试写个测试用例并导入运行后结果生成四、私聊或评论告诉我005获取源码附完整脚本好用记得回来点个赞哦有什么改进建议或使用问题欢迎评论区交流开发环境Windows 11Python 3.8.8项目代码结构