如何用Python在PowerShell/Windows Terminal通过ANSI转义码输出彩色文本?
解决Python输出ANSI转义码未被终端解析的问题
你这是踩了个语法环境的小坑——你写的$([char]0x1b)是PowerShell专属的语法,用来生成ESC(ASCII码27)控制字符,但Python根本不识别这个写法,所以它只会原封不动地把整个字符串输出,而不会把这段PowerShell代码转换成对应的控制字符。
为啥直接在终端输入那段字符串有效?因为那是PowerShell帮你解析了$([char]0x1b),把它替换成了真正的ESC字符,终端收到后才能识别后续的ANSI颜色码。但Python运行时不会做这个转换,就出现了“终端直接输有效、Python输出无效”的矛盾情况。
给你两个简单可行的解决方案:
方案1:用Python原生的ESC转义字符
Python支持用\033或者\x1b直接表示ESC字符,把它们写在字符串里就行:
message = "\033[30;41m YOUR_TEXT_HERE \033[0m" print(message)
方案2:用chr()生成ESC字符
如果觉得转义字符不够直观,可以用chr(27)生成ESC字符,再拼接成完整的颜色控制字符串:
esc_char = chr(27) message = f"{esc_char}[30;41m YOUR_TEXT_HERE {esc_char}[0m" print(message)
这两种写法都能让Python输出真正的ANSI控制序列,终端收到后就会正确显示黑字红底的效果了。
内容的提问来源于stack exchange,提问作者Ystan
相关产品推荐
相关产品推荐

