Edu*_*scu 12 python windows ansi-escape python-2.7
如果我在linux下的python中运行它可以工作:
start = "\033[1;31m"
end = "\033[0;0m"
print "File is: " + start + "<placeholder>" + end
Run Code Online (Sandbox Code Playgroud)
但是,如果我在Windows中运行它不起作用,我怎样才能使ANSI转义码在Windows上运行?
Gar*_*ubb 20
对于 Windows,调用 os.system("color") 会使 ANSI 转义序列得到正确处理:
import os
os.system("color")
COLOR = {
"HEADER": "\033[95m",
"BLUE": "\033[94m",
"GREEN": "\033[92m",
"RED": "\033[91m",
"ENDC": "\033[0m",
}
print(COLOR["GREEN"], "Testing Green!!", COLOR["ENDC"])
Run Code Online (Sandbox Code Playgroud)
pr0*_*g3d 16
您可以检查Python模块以在Windows上为stdout启用ANSI颜色吗?看它是否有用.
该彩色光模块似乎是跨平台的.
你安装colorama:
pip install colorama
Run Code Online (Sandbox Code Playgroud)
然后:
import colorama
colorama.init()
start = "\033[1;31m"
end = "\033[0;0m"
print "File is: " + start + "<placeholder>" + end
Run Code Online (Sandbox Code Playgroud)
Ubu*_*que 11
这是我长期寻求的解决方案。只需使用标准库中的ctypes模块即可。默认情况下,它与 Python 3.x 一起安装,仅在 Windows 上。因此,在使用它之前请检查操作系统是否为 Windows(例如,使用 )。platform.system
import os
if os.name == 'nt': # Only if we are running on Windows
from ctypes import windll
k = windll.kernel32
k.SetConsoleMode(k.GetStdHandle(-11), 7)
Run Code Online (Sandbox Code Playgroud)
完成后,您可以使用 ASCII 特殊字符(如\x1b[31m, 表示红色),就像在 Unix 操作系统上一样:
message = "ERROR"
print(f"\x1b[31m{message}\x1b[0m")
Run Code Online (Sandbox Code Playgroud)
我喜欢这个解决方案,因为它不需要安装模块(如 colorama 或 termcolor)。
如果您使用的是 Win 10(在 cmd 中具有本机 ANSI 支持),则似乎存在一个在 Python 3.7 中标记为已解决的错误(尽管它看起来并未实际修复)。
一种解决方法是subprocess.call('', shell=True)在打印前添加。