如何在Python中将彩色文本输出到终端?


当前回答

您可以使用pygments模块来执行此操作。例如:

from pygments import console
print(pygments.console.colorize("red", "This text is red."))

这不允许您为终端提供十六进制颜色,但您可以尝试许多内置颜色,如“蓝色”、“深绿色”、“黄色”等。

其他回答

我创建了一个项目(控制台颜色),并已将其发布到PyPI。

你可以抛出pip安装控制台颜色来安装它。

我用斯芬克斯写了文档,读了文档,看这里。

你可以从Googlecolab获得更多的例子。

我仍然发布了一些示例来吸引用户点击上面的链接:

# cprint is something like below
# cprint(text: str, fore: T_RGB = None, bg: T_RGB = None, style: Style = '')
# where T_RGB = Union[Tuple[int, int, int], str] for example. You can input (255, 0, 0) or '#ff0000' or 'ff0000'. They are OK.
# The Style you can input the ``Style.`` (the IDE will help you to choose what you wanted)

# from console_color import RGB, Fore, Style, cprint, create_print
from console_color import *

cprint("Hello, World!", RGB.RED, RGB.YELLOW, Style.BOLD+Style.URL+Style.STRIKE)
cprint("Hello, World!", fore=(255, 0, 0), bg="ffff00", style=Style.BOLD+Style.URL+Style.STRIKE)

当然,您不必输入所有参数。您可以只添加所需的属性。


老实说,这个项目并不特别。它只使用f“\033[{target};2;{r};{g};{b}m{text}{style}”其中target是38或48,text是您的输入字符串,style是“\33[0m',“\33[1m'…”\033[9m'。

我只是让它易于使用(至少对我来说)。

对于Windows,除非使用Win32 API,否则无法使用颜色打印到控制台。

对于Linux,它就像使用打印一样简单,转义序列如下:

颜色

要使字符像方框一样打印,这实际上取决于控制台窗口使用的字体。磅符号效果很好,但它取决于字体:

#
import click

click.secho('Hello, World!', fg='green')
click.secho('Some more text', bg='blue', fg='white')
click.secho('ATTENTION', blink=True, bold=True)

click(CLI库)有一种非常方便的方式来实现这一点,如果您正在编写命令行工具,无论如何都值得考虑。

另一个包装Python3打印功能的PyPI模块:

https://pypi.python.org/pypi/colorprint

如果您也可以从__future_import-print中使用,它可以在Python2.x中使用。下面是模块PyPI页面中的Python 2示例:

from __future__ import print_function
from colorprint import *

print('Hello', 'world', color='blue', end='', sep=', ')
print('!', color='red', format=['bold', 'blink'])

它输出“你好,世界!”,单词为蓝色,感叹号为粗体红色并闪烁。

def black(text):
    print('\033[30m', text, '\033[0m', sep='')

def red(text):
    print('\033[31m', text, '\033[0m', sep='')

def green(text):
    print('\033[32m', text, '\033[0m', sep='')

def yellow(text):
    print('\033[33m', text, '\033[0m', sep='')

def blue(text):
    print('\033[34m', text, '\033[0m', sep='')

def magenta(text):
    print('\033[35m', text, '\033[0m', sep='')

def cyan(text):
    print('\033[36m', text, '\033[0m', sep='')

def gray(text):
    print('\033[90m', text, '\033[0m', sep='')


black("BLACK")
red("RED")
green("GREEN")
yellow("YELLOW")
blue("BLACK")
magenta("MAGENTA")
cyan("CYAN")
gray("GRAY")

联机尝试