我想在Python2.7和Linux的以下代码中为文本添加颜色。
import colorama
colorama.init( strip=False )
print( colorama.Fore.RED + "Hello World!" + colorama.Fore.RESET )文本可以在终端上以彩色打印。但是,颜色在管道后被删除,如"python script.py | cat“。我猜Python会根据输出tty删除颜色。我如何实现像grep --color=always和ls --color=always这样的行为。
发布于 2018-07-08 15:27:02
这在库的readme中有明确的解释。
init()接受一些**kwargs来覆盖默认行为。
…
init(strip=None):
传递True或False以覆盖是否应从输出中剥离ansi代码。如果在Windows上或如果输出被重定向(而不是tty),则默认行为是剥离。init(convert=None):
传递True或False以重写是否将输出中的ANSI码转换为win32调用。默认行为是在Windows上进行转换,输出是tty (终端)。
假设你不是在Windows上,那么,答案是将strip=False而不是默认的strip=None传递给init。这就像是将--color=always而不是默认值传递给grep或ls。
当然,您的代码从一开始就没有调用init。你应该是这样的,但你却逃脱了惩罚,因为你大概不是在Windows上:
应用程序应该使用以下命令初始化Colorama:
from colorama import init init()
在Windows上,调用init()将从发送到标准输出或标准错误的任何文本中过滤出ANSI转义序列,并用等效的Win32调用替换它们。
在其他平台上,调用init()没有任何效果(除非您请求其他可选功能;请参阅下面的“初始化关键字参数”)。通过设计,这允许应用程序在所有平台上无条件地调用init(),之后ANSI输出应该可以正常工作。
https://stackoverflow.com/questions/51229559
复制相似问题