大家好,在学习Python编程的过程中,我们习惯于使用 print()
函数来输出文本。然而,许多人不知道的是,print()
函数不仅能输出普通的黑白文本,还能输出彩色文本。
原理
终端与ANSI转义序列
在深入代码之前,我们需要了解一些基础知识。终端(Terminal)是我们与操作系统交互的重要工具,而ANSI转义序列(ANSI escape sequences)则是控制终端行为的指令集合。通过这些转义序列,我们可以改变文本颜色、背景色等。
什么是ANSI转义序列?
ANSI转义序列是一串以 \033[
开头的字符,用于控制终端的显示属性。常见的颜色码如下:
- 字体颜色(Foreground color):
- 黑色:
30
- 红色:
31
- 绿色:
32
- 黄色:
33
- 蓝色:
34
- 洋红:
35
- 青色:
36
- 白色:
37
- 黑色:
- 背景颜色(Background color):
- 黑色:
40
- 红色:
41
- 绿色:
42
- 黄色:
43
- 蓝色:
44
- 洋红:
45
- 青色:
46
- 白色:
47
- 黑色:
案例代码
基本用法
下面是一个简单的示例,展示如何使用ANSI转义序列打印彩色文本:
# 打印红色文本
print("\033[31m这是红色文本\033[0m")
# 打印绿色文本
print("\033[32m这是绿色文本\033[0m")
在上述代码中,\033[31m
设置文本颜色为红色,\033[32m
设置文本颜色为绿色,\033[0m
则用于重置所有属性,以确保后续文本不受影响。
彩色文本函数
为了便于使用,我们可以封装一个函数,来简化彩色文本的打印:
def print_color(text, color):
color_codes = {
"black": "30",
"red": "31",
"green": "32",
"yellow": "33",
"blue": "34",
"magenta": "35",
"cyan": "36",
"white": "37"
}
color_code = color_codes.get(color.lower(), "37")
print(f"\033[{color_code}m{text}\033[0m")
# 使用封装的函数打印彩色文本
print_color("这是红色文本", "red")
print_color("这是绿色文本", "green")
print_color("这是蓝色文本", "blue")
高级用法
我们还可以通过组合多种属性来实现更复杂的效果。例如,打印带有不同背景色的文本:
def print_color_bg(text, fg_color, bg_color):
fg_color_codes = {
"black": "30",
"red": "31",
"green": "32",
"yellow": "33",
"blue": "34",
"magenta": "35",
"cyan": "36",
"white": "37"
}
bg_color_codes = {
"black": "40",
"red": "41",
"green": "42",
"yellow": "43",
"blue": "44",
"magenta": "45",
"cyan": "46",
"white": "47"
}
fg_code = fg_color_codes.get(fg_color.lower(), "37")
bg_code = bg_color_codes.get(bg_color.lower(), "40")
print(f"\033[{fg_code};{bg_code}m{text}\033[0m")
# 使用封装的函数打印带背景色的彩色文本
print_color_bg("红色文字,黄色背景", "red", "yellow")
print_color_bg("绿色文字,蓝色背景", "green", "blue")
完整案例:彩色日志系统
我们可以利用上述知识,创建一个简单的彩色日志系统,用不同的颜色表示不同级别的日志信息:
class ColorLogger:
def __init__(self):
self.level_colors = {
"info": "32", # 绿色
"warning": "33", # 黄色
"error": "31" # 红色
}
def log(self, message, level="info"):
color_code = self.level_colors.get(level.lower(), "37")
print(f"\033[{color_code}m[{level.upper()}] {message}\033[0m")
# 使用彩色日志系统
logger = ColorLogger()
logger.log("这是信息日志", "info")
logger.log("这是警告日志", "warning")
logger.log("这是错误日志", "error")
彩色文本的输出不仅让代码更加生动,还能在实际开发中,如日志系统等,发挥重要作用。
标签:bg,Python,color,code,print,033,文本 From: https://blog.csdn.net/pythondh1/article/details/140512552