如何在Python中将彩色输出打印到终端?

如何在Python中将彩色输出打印到终端?,第1张

如何在Python中将彩色输出打印终端

请问Python的termcolor模块呢?对于某些用途,这将是大致等效的。

from termcolor import coloredprint colored('hello', 'red'), colored('world', 'green')import sysfrom termcolor import colored, cprinttext = colored('Hello, World!', 'red', attrs=['reverse', 'blink'])print(text)cprint('Hello, World!', 'green', 'on_red')

一个特殊的要求是设置颜色,并可能设置其他终端属性,以便随后的所有打印都是这样。 虽然我在原始帖子中说过此模块可以实现这一点,但现在我不这么认为。
请参阅最后一节,了解执行此 *** 作的方法。

但是,大多数情况下,我们以彩色(一两行)打印短段文本。因此,这些示例中的界面可能比“打开”颜色,打印然后关闭它更好。(就像所示的Perl示例一样。)在语言方面,您可以向打印函数添加可选参数以对输出进行着色,并且可以在函数中使用模块的函数对文本进行着色。这也使解决格式和着色之间的偶然冲突变得更加容易。只是一个想法。


这是设置终端的基本方法,以便使用给定的颜色,属性或模式渲染所有后续打印。

将适当的ANSI序列发送到终端后,所有后续文本都将以这种方式呈现。因此,如果我们希望将来打印到此终端的所有文本均为亮红色/粗体红色,请打印,

ESC[
然后打印“
bright”属性(1)和红色(31)的代码,然后是
m

# print "33[1;31m"   # this would emit a new line as wellimport syssys.stdout.write("33[1;31m")print "All following prints will be red ..."

要关闭任何先前设置的属性,请对属性

33[0;35m
(洋红色)使用0 。

要在python 3中取消换行,请使用

print('...', end="")
。剩下的工作是将其包装以便模块化使用(以便于消化)。

文件 colors.py

RED   = "33[1;31m"  BLUE  = "33[1;34m"CYAN  = "33[1;36m"GREEN = "33[0;32m"RESET = "33[0;0m"BOLD    = "33[;1m"REVERSE = "33[;7m"

我建议您快速阅读一些代码参考。颜色和属性可以组合,并且可以在此程序包中组合一个漂亮的列表。剧本

import sysfrom colors import *sys.stdout.write(RED)print "All following prints rendered in red, until changed"sys.stdout.write(REVERSE + CYAN)print "From now on change to cyan, in reverse mode"print "NOTE: 'CYAN + REVERSE' wouldn't work"sys.stdout.write(RESET)print "'REVERSE' and similar modes need be reset explicitly"print "For color alone this is not needed; just change to new color"print "All normal prints after 'RESET' above."

如果经常使用

sys.stdout.write()
麻烦,可以将其包装在一个微小的函数中,或者将其包装成带有设置终端行为的方法的类(打印ANSI代码)。

上面的一些内容更像是查找它的建议,例如将反向模式和颜色组合在一起。(这在问题中使用的Perl模块中可用,并且对顺序和类似内容也敏感。)


令人惊讶的是,很难找到一个方便的转义代码列表,尽管有很多关于终端行为及其控制方法的参考。ANSI转义码上的Wiki页包含所有信息,但需要一些工作才能将它们组合在一起。Bash上的页面提示具有许多特定的有用信息。这是带有直接代码表的另一页。还有更多。

可以与类似的模块一起使用

termocolor



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5645031.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存