有没有 Perl 的 Python 等价物
print color 'red';
print <something>;
print color 'reset';
可用的?
我正在使用这种方法:
"\x1b[1;%dm" % (<color code>) + "ERROR: log file does not exist" + "\x1b[0m"
我想要的是我应该能够为所有打印消息设置颜色,例如,
print color 'red'
function_print_something(<some message>)
print color 'reset'
这里“function_print_something”是我的 python 函数,它将一些格式化的日志消息打印到屏幕上。
原文由 Turbo Sullivan 发布,翻译遵循 CC BY-SA 4.0 许可协议
Python termcolor 模块 可以吗?对于某些用途,这将是粗略的等价物。
该示例来自 这篇文章,其中包含更多内容。这是文档示例的一部分
一个特定的要求是设置颜色,可能还有其他终端属性,以便所有后续打印都是这样。 虽然我在原来的帖子中说这个模块可以实现,但我现在不这么认为。 请参阅最后一节以了解执行此操作的方法。
然而,大多数时候我们用彩色打印一小段文本,一两行。因此,这些示例中的界面可能比“打开”颜色、打印然后关闭它更合适。 (就像在所示的 Perl 示例中一样。)也许您可以向打印函数添加可选参数来为输出着色,并在该函数中使用模块的函数为文本着色。这也使得解决格式和着色之间偶尔发生的冲突变得更加容易。只是一个想法。
这是设置终端的基本方法,以便使用给定的颜色、属性或模式呈现所有后续打印。
一旦将适当的 ANSI 序列发送到终端,所有后续文本都将以这种方式呈现。因此,如果我们希望将来打印到此终端的所有文本都是亮/粗红色,请打印
ESC[
后跟“亮”属性 (1) 和红色 (31) 的代码,然后是m
要关闭任何先前设置的属性,请使用 0 作为属性,
\033[0;35m
(洋红色)。要在 python 3 中禁止换行,请使用
print('...', end="")
。剩下的工作是将其打包以供模块化使用(以及更容易消化)。文件 颜色.py
我建议快速阅读一些代码参考。颜色和属性可以组合在一起,可以在这个包中组合一个漂亮的列表。一个脚本
如果经常使用
sys.stdout.write()
很麻烦,可以将它包装在一个小函数中,或者将包变成一个具有设置终端行为(打印 ANSI 代码)的方法的类。上面的一些更像是一个建议来查找它,比如结合反向模式和颜色。 (这在问题中使用的 Perl 模块中可用,并且对顺序和类似内容也很敏感。)
一个方便的转义码列表出奇地难以找到,但有很多关于终端行为以及如何控制它的参考资料。 ANSI 转义码上的 Wiki 页面 包含所有信息,但需要一些工作才能将它们组合在一起。 Bash 提示符 上的页面有很多特定的有用信息。这是 另一个带有直接代码表的页面。还有更多。
这可以与
termocolor
等模块一起使用。