插件窝 干货文章 Python终端彩色输出:如何优雅地实现?

Python终端彩色输出:如何优雅地实现?

文本 这是 print Colors 578    来源:    2025-03-15

在Python终端中实现彩色输出,可以通过使用ANSI转义序列来实现。ANSI转义序列是一种用于控制终端文本颜色、背景颜色、样式等的特殊字符序列。Python中可以通过在字符串中嵌入这些序列来实现彩色输出。

1. 使用ANSI转义序列

ANSI转义序列以\033[开头,后面跟着控制代码。常见的控制代码包括:

  • \033[0m:重置所有样式(关闭所有颜色和样式)
  • \033[31m:红色文本
  • \033[32m:绿色文本
  • \033[33m:黄色文本
  • \033[34m:蓝色文本
  • \033[35m:洋红色文本
  • \033[36m:青色文本
  • \033[37m:白色文本
  • \033[1m:加粗文本
  • \033[4m:下划线文本

2. 示例代码

# 定义颜色和样式
class Colors:
    RED = '\033[31m'
    GREEN = '\033[32m'
    YELLOW = '\033[33m'
    BLUE = '\033[34m'
    MAGENTA = '\033[35m'
    CYAN = '\033[36m'
    WHITE = '\033[37m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'
    RESET = '\033[0m'

# 使用颜色和样式
print(f"{Colors.RED}这是红色文本{Colors.RESET}")
print(f"{Colors.GREEN}这是绿色文本{Colors.RESET}")
print(f"{Colors.YELLOW}这是黄色文本{Colors.RESET}")
print(f"{Colors.BLUE}这是蓝色文本{Colors.RESET}")
print(f"{Colors.MAGENTA}这是洋红色文本{Colors.RESET}")
print(f"{Colors.CYAN}这是青色文本{Colors.RESET}")
print(f"{Colors.WHITE}这是白色文本{Colors.RESET}")
print(f"{Colors.BOLD}这是加粗文本{Colors.RESET}")
print(f"{Colors.UNDERLINE}这是下划线文本{Colors.RESET}")

3. 使用第三方库

如果你觉得手动编写ANSI转义序列比较麻烦,可以使用一些第三方库来简化操作。常用的库包括:

  • colorama:跨平台支持彩色输出的库。
  • termcolor:提供简单的彩色输出功能。

使用colorama

from colorama import Fore, Back, Style, init

# 初始化colorama
init()

print(Fore.RED + '这是红色文本')
print(Fore.GREEN + '这是绿色文本')
print(Fore.YELLOW + '这是黄色文本')
print(Fore.BLUE + '这是蓝色文本')
print(Fore.MAGENTA + '这是洋红色文本')
print(Fore.CYAN + '这是青色文本')
print(Fore.WHITE + '这是白色文本')
print(Style.BRIGHT + '这是加粗文本')
print(Style.RESET_ALL)  # 重置所有样式

使用termcolor

from termcolor import colored

print(colored('这是红色文本', 'red'))
print(colored('这是绿色文本', 'green'))
print(colored('这是黄色文本', 'yellow'))
print(colored('这是蓝色文本', 'blue'))
print(colored('这是洋红色文本', 'magenta'))
print(colored('这是青色文本', 'cyan'))
print(colored('这是白色文本', 'white'))
print(colored('这是加粗文本', 'white', attrs=['bold']))

4. 跨平台兼容性

需要注意的是,ANSI转义序列在Windows系统上默认是不支持的。如果你需要在Windows上使用彩色输出,可以使用colorama库,它会自动处理跨平台兼容性问题。

5. 总结

  • 如果你只需要简单的彩色输出,可以直接使用ANSI转义序列。
  • 如果你需要跨平台支持或更高级的功能,可以使用coloramatermcolor等第三方库。

通过这些方法,你可以在Python终端中优雅地实现彩色输出。