Python 打印彩色文本

Rayven Esplanada 2023年1月30日 2020年11月7日
  1. 在 Python 中使用 ANSI 转义码打印彩色文本
  2. 在 Python 中使用 colorama 模块打印彩色文本
Python 打印彩色文本

本教程告诉你如何在 Python 中打印时生成彩色文本。

使用输入来操作命令行控制台的唯一方法是使用 ANSI 转义码。这些代码可以操纵控制台功能,如文本或背景颜色、光标设置、字体和控制台中的其他可修改元素。

在 Python 中使用 ANSI 转义码打印彩色文本

首先,让我们声明一个 Python 类,它给我们提供了一些代表颜色的 ANSI 码。

class bcolors:
    OK = '\033[92m' #GREEN
    WARNING = '\033[93m' #YELLOW
    FAIL = '\033[91m' #RED
    RESET = '\033[0m' #RESET COLOR

其中有 3 个变量是实际的 ANSI 代码的颜色,而变量 RESET 是用来将颜色设置回默认值的。

函数 print() 将字符串参数输出到命令行控制台。

如果你想让 print() 的输出是有颜色的,你就必须在字符串中插入 ANSI 代码,可以操纵命令行控制台。

使用类 bcolors,我们将打印 3 行不同颜色的字符串。

print(bcolors.OK + "File Saved Successfully!" + bcolors.RESET)
print(bcolors.WARNING + "Warning: Are you sure you want to continue?" + bcolors.RESET)
print(bcolors.FAIL + "Unable to delete record." + bcolors.RESET)

我们在字符串前加上你希望它反映的颜色,并在下一次使用 print() 或下一次使用终端前用 bcolors.RESET 将颜色重置为默认值。

如果你使用 Python 3,你也可以像这样格式化你的 print() 语句。

print(f"{bcolors.OK}File Saved Successfully!{bcolors.RESET}")
print(f"{bcolors.WARNING}Warning: Are you sure you want to continue?{bcolors.RESET}")
print(f"{bcolors.FAIL}Unable to delete record.{bcolors.RESET}")

输出:

Python 有色文本输出

在输出最后一行后,由于 bcolors.RESET 的作用,终端会被重置回默认颜色。如果你没有把它放在行末,终端中的文本将被染成你在 print() 中设置的最后一种颜色。在这种情况下,它将是红色的。

在 Python 中使用 colorama 模块打印彩色文本

ANSI 的问题是它在 Windows 操作系统中可能无法正常工作,所以你需要变通的方法来使它在 Windows 控制台中工作。

colorama 是一个使用 ANSI 转义码的 Python 模块。这个模块也使 ANSI 与 Windows 兼容成为可能。文档中解释了他们是如何使 ANSI 代码与 Windows 兼容成为可能的。

这里有一个可用的 colorama 前景色的列表。

BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, RESET

它们也有样式,包括一个 RESET_ALL,可以重置所有当前的 ANSI 修改,而 Fore.RESET 只重置最新的 ANSI。

DIM, NORMAL, BRIGHT, RESET_ALL

首先,我们需要安装 colorama,因为它是一个社区创建的库。我们可以使用 pipanaconda 来安装这个依赖关系。

  • 对于 pippip3
pip install colorama
pip3 install colorama //if you're using python3
  • 对于 anaconda
conda install -c anaconda colorama

我们将尝试一些颜色,并输出几行不同的颜色和风格。我们使用 colorama.init() 来使这些设置在 Windows 下工作。

import colorama
from colorama import Fore
from colorama import Style

colorama.init()
print(Fore.BLUE + Style.BRIGHT + "This is the color of the sky" + Style.RESET_ALL)
print(Fore.GREEN + "This is the color of grass" + Style.RESET_ALL)
print(Fore.BLUE + Style.DIM + "This is a dimmer version of the sky" + Style.RESET_ALL)
print(Fore.YELLOW + "This is the color of the sun" + Style.RESET_ALL)

输出:

用 colorma 输出 Python 彩色文本

DIMBRIGHT 用在同一种颜色上时,会输出不同深浅的颜色。RESET_ALL 将颜色重置为默认值,可以设置为其他颜色,也可以让它回到默认值。

综上所述,在 Python 中打印出彩色文本的唯一方法就是利用 ANSI 转义码。这是控制台理解 Python 的 print() 语句指令的唯一方法。你可以通过在你的 print() 中包含实际的转义码来手动完成,或者使用 colorama 将 ANSI 代码包装成更易读的格式。

如果你想获得更多的 ANSI 代码颜色的选择,互联网上有很多资源提供,本文是一个好的开始。你也可以用 ANSI 代码来格式化文本(粗体、下划线、斜体),改变你的控制台背景,以及更多。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

相关文章 - Python Print