您可以查看手册页console_codes(4)
。你想要的是 ECMA-48 Set Graphics Rendition:
ECMA-48 SGR 序列ESC [ parameters m
设置显示属性。可以按相同的顺序设置多个属性,用分号分隔。空参数(在分号或字符串起始符或终止符之间)被解释为零。
param result
0 reset all attributes to their defaults
1 set bold
2 set half-bright (simulated with color on a color display)
4 set underscore (simulated with color on a color display) (the colors used to
simulate dim or underline are set using ESC ] ...)
5 set blink
7 set reverse video
10 reset selected mapping, display control flag, and toggle meta flag (ECMA-48
says "primary font").
11 select null mapping, set display control flag, reset toggle meta flag
(ECMA-48 says "first alternate font").
12 select null mapping, set display control flag, set toggle meta flag (ECMA-48
says "second alternate font"). The toggle meta flag causes the high bit of a
byte to be toggled before the mapping table translation is done.
21 set normal intensity (ECMA-48 says "doubly underlined")
22 set normal intensity
24 underline off
25 blink off
27 reverse video off
30 set black foreground
31 set red foreground
32 set green foreground
33 set brown foreground
34 set blue foreground
35 set magenta foreground
36 set cyan foreground
37 set white foreground
38 set underscore on, set default foreground color
39 set underscore off, set default foreground color
40 set black background
41 set red background
42 set green background
43 set brown background
44 set blue background
45 set magenta background
46 set cyan background
47 set white background
49 set default background color
我不认为它们在任何标准 Python 模块中都是可用的。但是如果你仔细看,你会发现前景色是30
加上curses
常数,而背景色是40
加上curses
常数。所以你可以这样写:
import curses
def fcolor(c):
return '\x1B[{0}m'.format(30 + c)
def bcolor(c):
return '\x1B[{0}m'.format(40 + c)
def fbcolor(f, b):
return '\x1B[{0};{1}m'.format(30 + f, 40 + b)
print(fbcolor(curses.COLOR_RED, curses.COLOR_YELLOW) + "hello!")