在 Python 调试或写命令行工具时,我们常希望终端里用红色标出错误、绿色标出成功,同时把这些日志存到文件备查。但不少人发现,一旦把 print() 重定向到文件,颜色就没了。这并非 Python 删除了颜色,而是输出目标从“终端”变成“普通文件”后,部分封装库主动忽略了 ANSI 转义序列。只要理解原理并做一点封装,就能让文件原样保留彩色控制符。

为什么 print 到文件会丢失颜色
ANSI 颜色本质是形如
在 Python 调试或写命令行工具时,我们常希望终端里用红色标出错误、绿色标出成功,同时把这些日志存到文件备查。但不少人发现,一旦把 print() 重定向到文件,颜色就没了。这并非 Python 删除了颜色,而是输出目标从“终端”变成“普通文件”后,部分封装库主动忽略了 ANSI 转义序列。只要理解原理并做一点封装,就能让文件原样保留彩色控制符。

ANSI 颜色本质是形如