colorama是用于生成彩色的终端文本和光标定位的python库。
介绍
ANSI转义字符序列长期以来一直用于在Unix和Mac上产生彩色的终端文本和光标定位。Colorama也通过包装stdout,剥离其找到的ANSI序列(将在输出中显示为gobbledygook)并将其转换为适当的win32调用来修改终端的状态,从而在Windows上实现了这一功能。在其他平台上,Colorama不执行任何操作。
这样做的目的是提供一个简单的跨平台API,以从Python打印彩色终端文本,并且具有令人欣喜的副作用,即使用ANSI序列在Linux或Mac上生成彩色输出的现有应用程序或库现在也可以在Windows上运行,只需调用 colorama.init()即可。
一种替代方法是在Windows计算机上安装ansi.sys,这为在终端中运行的所有应用程序提供了相同的行为。Colorama适用于不容易的情况(例如,您的应用程序没有安装程序。)
源代码存储库中的演示脚本使用ANSI序列打印一些彩色文本。比较它们在Gnome终端内置的ANSI处理下的输出与使用Colorama的Windows命令提示符下的输出:
在gnome-terminal下的Ubuntu上的ANSI序列。 使用Colorama在Windows上具有相同的ANSI序列。
这些屏幕快照显示,在Windows上,Colorama不支持ANSI“暗淡的文本”。它看起来与“普通文本”相同。
获取
使用pip安装:pip install colorama,或者下载colorama的源代码手动安装。
用法
初始化
应用程序应使用以下方法初始化Colorama:from colorama import init
init()
在Windows上,调用init()会从发送到stdout或stderr的所有文本中过滤出ANSI转义序列,并用等效的Win32调用替换它们。
在其他平台上,调用init()无效(除非您请求其他可选功能;请参见下面的“ Init Keyword Args”)。通过设计,这允许应用程序在所有平台上无条件调用init(),此后ANSI输出应该可以正常工作。
要在程序退出之前停止使用Colorama,只需调用deinit()即可。这会将stdout和stderr恢复为原始值,从而禁用Colorama。要再次使用Colorama,请调用reinit();它比再次调用init()便宜(但做同样的事情)。
彩色输出
然后可以使用Colorama的ANSI转义序列的常量速记来进行彩色文本的跨平台打印:
或仅通过从您自己的代码中手动打印ANSI序列即可:print('\033[31m' + 'some red text')
print('\033[39m') # and reset to default color
…或者,Colorama可以与现有的ANSI库一起使用,例如古老的Termcolor 或神话般的Blessings。强烈建议将其用于琐碎的着色之外的所有操作:
可用的格式常量为:
Style.RESET_ALL重设前景,背景和亮度。Colorama将在程序退出时自动执行此重置。
光标定位
支持用于重新定位光标的ANSI代码。有关如何生成它们的示例,请参见源文件里面的demos/demo06.py。