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


当前回答

为了解决这个问题,我创建了一个简单得让人麻木的程序包,用插值颜色代码打印字符串,称为icolor。

icolor包含两个函数:cformat和cprint,每个函数都包含一个字符串和子字符串,这些子字符串被插值以映射到ANSI转义序列。

from icolor import cformat # there is also cprint

cformat("This is #RED;a red string, partially with a #xBLUE;blue background")
'This is \x1b[31ma red string, partially with a \x1b[44mblue background\x1b[0m'

包括所有ANSI颜色(例如#RED;、#BLUE;等)以及#RESET#粗体;以及其他。

背景色具有x前缀,因此绿色背景将为#xGREEN;。

一个人可以用##逃脱#。

鉴于其简单性,最好的文档可能是代码本身。

它在PYPI上,因此可以使用sudo easy_install icolor。

其他回答

一个更简单的选择是使用termcolor包中的cprint函数。

它还支持%s,%d格式的打印:

结果可能取决于终端,因此请查看软件包文档的“终端财产”部分。

Windows命令提示符和Python IDLE不工作

JupyterLab笔记本确实有效

我编写了一个简单的模块,可在以下网址获得:http://pypi.python.org/pypi/colorconsole

它适用于Windows、Mac OS X和Linux。它在Linux和Mac上使用ANSI,但在Windows上使用对控制台函数的本地调用。你有颜色、光标定位和键盘输入。它不是诅咒的替代品,但如果您需要在简单脚本或ASCII游戏中使用,它可能非常有用。

最低等级:

class log:
    f = lambda color: lambda string: print(color + string + "\33[0m")

    black = f("\33[30m")
    red = f("\33[31m")
    green = f("\33[32m")
    yellow = f("\33[33m")
    blue = f("\33[34m")
    magenta = f("\33[35m")
    cyan = f("\33[36m")
    white = f("\33[37m")

# Usage
log.blue("Blue World!")
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库)有一种非常方便的方式来实现这一点,如果您正在编写命令行工具,无论如何都值得考虑。

我编写了一个在PyPI上可用的库,它有一个遵循标准打印函数的简单API。

你可以用pip安装着色来安装它。

import coloring

# Directly use print-like functions
coloring.print_red('Hello', 12)
coloring.print_green('Hey', end="", sep=";")
print()

# Get str as return
print(coloring.red('hello'))

# Use the generic colorize function
print(coloring.colorize("I'm red", "red")) # Using color names
print(coloring.colorize("I'm green", (0, 255, 0)))  # Using RGB colors
print(coloring.colorize("I'm blue", "#0000ff"))  # Using hex colors

# Or using styles (underline, bold, italic, ...)
print(coloring.colorize('Hello', 'red', s='ub'))  # underline and bold

执行代码:

您可以在此处查看所有功能:https://github.com/Nazime/coloring.