Python 3.x Python ANSI颜色代码

Python 3.x Python ANSI颜色代码,python-3.x,terminal,Python 3.x,Terminal,Windows上的Python 3.7在subprocess.call()中的shell=True之前,打印不会像预期的那样用于ANSI颜色代码 在下面的链接中,似乎暗示ANSI颜色代码应该使用“打印”命令开箱即用 第二个提到VT100仿真。。。不知道那到底是什么意思。我能够编写一个批处理文件,输出精细的颜色,因此我(天真地)认为它在Python中应该以同样的方式工作 但是,我不能使用ANSI颜色代码,因为ESC字符似乎被“注释掉”(?),因为例如,当我 print(u"\u001b[31m

Windows上的Python 3.7在subprocess.call()中的shell=True之前,打印不会像预期的那样用于ANSI颜色代码

在下面的链接中,似乎暗示ANSI颜色代码应该使用“打印”命令开箱即用

第二个提到VT100仿真。。。不知道那到底是什么意思。我能够编写一个批处理文件,输出精细的颜色,因此我(天真地)认为它在Python中应该以同样的方式工作

但是,我不能使用ANSI颜色代码,因为ESC字符似乎被“注释掉”(?),因为例如,当我

print(u"\u001b[31mHelloWorld")
我无法看到彩色输出,因为ESC字符在Windows中似乎是必需的,并且在python shell中打印为“[?]”(带问号的框)


我在这里遗漏了什么吗?

我找到了答案。正如经常发生的那样,我只是看得不够远

Colorama模块可与一起安装

py-m pip安装colorama

并且在名为
init

colorama.init()

这是一个跨平台的功能,因为它只在windows上有用(它保存活动的终端状态以进行反转,并将终端写入ANSI代码的预处理),它对其他操作系统不起任何作用

我正在考虑使用ctypes实现一个更轻量级的解决方案,并自己在活动终端上设置解释标志

如果您对更多信息感兴趣,请参阅此处:

输出序列 如果使用SetConsoleMode标志在屏幕缓冲区句柄上设置了ENABLE_VIRTUAL_terminal_PROCESSING标志,则控制台主机在写入输出流时会截取以下终端序列。请注意,DISABLE_NEWLINE_AUTO_RETURN标志在模拟其他终端仿真器相对于写入任何行最后一列的字符的光标定位和滚动行为时也很有用

我的