我的Python解释器无法使用ANSI代码
我想在项目中给一些输出着色,于是我查找了如何给打印字符上色,并找到了ANSI转义码。然后我尝试在解释器上使用,但它不起作用。
例如:
print("\033[32m Hello")
这段代码给我显示了一个带有箭头向左标识<-[32m Hello
。
如何让它工作?它能在Python解释器中使用吗?如果不能,在哪里可以使用?
我的Python解释器无法使用ANSI代码
我想在项目中给一些输出着色,于是我查找了如何给打印字符上色,并找到了ANSI转义码。然后我尝试在解释器上使用,但它不起作用。
例如:
print("\033[32m Hello")
这段代码给我显示了一个带有箭头向左标识<-[32m Hello
。
如何让它工作?它能在Python解释器中使用吗?如果不能,在哪里可以使用?
使用os.system('')
确保ANSI转义序列被正确处理。下面是在Windows命令提示符中的示例:
确保ANSI转义序列和颜色代码之间没有空格!这对我来说有点麻烦。
你可能正在使用IDLE...在这种情况下,你不能使用ANSI颜色;IDLE的“终端”实际上并不是一个终端,因此无论你输入chr(0x1B)
、\033
还是\x1b
,ANSI代码都会显示为一个字符;它们都是一样的。
你的箭头字符是正常的;我只看到一个方框,因为默认字体可能不支持左箭头...?
但是@thatotherguy的解释可能是正确的...除非你正在使用IDLE,因为在这种情况下,这肯定是问题所在。
最好安装其他软件包来帮助生成ANSI序列,如果我没记错的话,win32控制台不支持本地ANSI颜色。其中一个选项是安装colorama。以下代码片段将打印出红色文本。
import colorama
from colorama import Fore, Back, Style
colorama.init()
print(Fore.RED + 'This is red')
编辑:经过进一步的研究,我意识到Windows 10 支持 ANSI转义序列,并且您可以通过调用来实现。如果您打算复制和粘贴,请使用this。
import os
os.system("echo [31mThis is red[0m")
不过我仍然更喜欢前者。
print("\033[32m Hello")
放入一个名为test.py
的文件中,并在Unix终端中运行python2 test.py
或python3 test.py
时,我会看到绿色的Hello
输出。尽管在CP437编码中,\033
代表左箭头。你是在Windows系统上进行操作吗?如果是,请确保已经手动安装了用于解释ANSI转义序列的Windows软件。 - that other guycmd.exe
提供,而是由控制台宿主(conhost.exe
)和客户端服务器运行时系统服务(csrss.exe
)的组合提供。请参阅 https://www.howtogeek.com/howto/4996/what-is-conhost.exe-and-why-is-it-running/。 - Michael Butscher