如果我在 linux 下的 python 中运行它,它可以工作:
start = "\033[1;31m"
end = "\033[0;0m"
print "File is: " + start + "<placeholder>" + end
但是如果我在 Windows 中运行它就不起作用,我怎样才能让 ANSI 转义码在 Windows 上也能工作?
如果我在 linux 下的 python 中运行它,它可以工作:
start = "\033[1;31m"
end = "\033[0;0m"
print "File is: " + start + "<placeholder>" + end
但是如果我在 Windows 中运行它就不起作用,我怎样才能让 ANSI 转义码在 Windows 上也能工作?
对于 Windows,调用os.system("")
可以正确处理 ANSI 转义序列:
import os
os.system("") # enables ansi escape characters in terminal
COLOR = {
"HEADER": "\033[95m",
"BLUE": "\033[94m",
"GREEN": "\033[92m",
"RED": "\033[91m",
"ENDC": "\033[0m",
}
print(COLOR["GREEN"], "Testing Green!!", COLOR["ENDC"])
您可以检查Python 模块以在 Windows 上为标准输出启用 ANSI 颜色吗?看看它是否有用。
colorama模块似乎是跨平台的。
你安装 colorama:
pip install colorama
然后:
import colorama
colorama.init()
start = "\033[1;31m"
end = "\033[0;0m"
print "File is: " + start + "<placeholder>" + end
这是我长期以来寻求的解决方案。只需使用标准库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)
完成此操作后,您可以使用 ASCII 特殊字符(例如\x1b[31m
,红色),就像您在 Unix 操作系统上一样:
message = "ERROR"
print(f"\x1b[31m{message}\x1b[0m")
我喜欢这个解决方案,因为它不需要安装模块(如 colorama 或 termcolor)。
如果您使用的是 Win 10(在 cmd 中具有本机 ANSI 支持),则似乎存在一个在 Python 3.7 中被标记为已解决的错误(尽管看起来它实际上并未修复)。
一种解决方法是subprocess.call('', shell=True)
在打印前添加。
你可以看看https://github.com/kennethreitz/clint
从自述文件:
>>> from clint.textui import colored, puts
>>> puts(colored.red('red text'))
red text
# It's red in Windows, OSX, and Linux alike.
你可以这样做:
import os
os.system("")
这对我有用。命令提示符默认支持颜色。
根据互联网上成千上万的好答案,发送 ANSI 转义序列应该可以工作,但是一个模糊的细节花了我两天半的时间才偶然发现。诀窍是必须设置某个注册表项。我正在使用(仅适用于今天)Windows 10 Enterprise,版本 1709,内部版本 16299。
在 HKEY_CURRENT_USER 中,在 Console 下,在 TrimLeadingZeros 和 WindowAlpha 之间应该有 VirtualTerminalLevel。如果它不存在,请继续创建它。这是一个 REG_DWORD。将其值设置为 1。打开一个新终端,运行 Python,然后玩得开心一点。
print("\033[48;2;255;140;60m ORANGE BACKGROUND \033[48;2;0;0;0m")
请参阅https://github.com/ytdl-org/youtube-dl/issues/15758阅读比我了解更多的人的资料。
现在,如果我能记住为什么要为 Python 程序的输出着色...
这是我使用过的更简单的代码。
import os
os.system("color") # Alternative - os.system("")
TCOLOR = "\033[31;3m"
ENDC = "\033[m"
print (TCOLOR + "Make yourself happy" + ENDC)
我写了一个简单的模块,可在: http: //pypi.python.org/pypi/colorconsole
它适用于 Windows、Mac OS X 和 Linux。它对 Linux 和 Mac 使用 ANSI,但在 Windows 上对控制台函数进行本地调用。您有颜色、光标定位和键盘输入。它不能替代 curses,但如果您需要在简单的脚本或 ASCII 游戏中使用它会非常有用。
可以在此处找到文档:http ://code.google.com/p/colorconsole/wiki/PageName
PS:这与使用 Python 在终端中打印颜色的答案相同吗?,但我不知道如何链接到回复。
尝试在此处添加分号\033[;
,如果没有该分号,我会得到不良影响。
start = "\033[;1;31m"
end = "\033[;0;0m"
import os
os.system("")
COR = {
"HEADER": "\033[95m",
"BLUE": "\033[94m",
"GREEN": "\033[92m",
"RED": "\033[91m",
"ENDC": "\033[0m",
}
print(COR["RED"]+"Testing Green!!"+COR["ENDC"])