首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python2.7:如何使用颜色重定向文本

Python2.7:如何使用颜色重定向文本
EN

Stack Overflow用户
提问于 2018-07-08 14:53:44
回答 1查看 230关注 0票数 1

我想在Python2.7和Linux的以下代码中为文本添加颜色。

代码语言:javascript
运行
复制
import colorama
colorama.init( strip=False )

print( colorama.Fore.RED + "Hello World!" + colorama.Fore.RESET )

文本可以在终端上以彩色打印。但是,颜色在管道后被删除,如"python script.py | cat“。我猜Python会根据输出tty删除颜色。我如何实现像grep --color=alwaysls --color=always这样的行为。

EN

回答 1

Stack Overflow用户

发布于 2018-07-08 15:27:02

这在库的readme中有明确的解释。

init()接受一些**kwargs来覆盖默认行为。

init(strip=None)

传递TrueFalse以覆盖是否应从输出中剥离ansi代码。如果在Windows上或如果输出被重定向(而不是tty),则默认行为是剥离。init(convert=None)

传递TrueFalse以重写是否将输出中的ANSI码转换为win32调用。默认行为是在Windows上进行转换,输出是tty (终端)。

假设你不是在Windows上,那么,答案是将strip=False而不是默认的strip=None传递给init。这就像是将--color=always而不是默认值传递给grepls

当然,您的代码从一开始就没有调用init。你应该是这样的,但你却逃脱了惩罚,因为你大概不是在Windows上:

应用程序应该使用以下命令初始化Colorama:

from colorama import init init()

在Windows上,调用init()将从发送到标准输出或标准错误的任何文本中过滤出ANSI转义序列,并用等效的Win32调用替换它们。

在其他平台上,调用init()没有任何效果(除非您请求其他可选功能;请参阅下面的“初始化关键字参数”)。通过设计,这允许应用程序在所有平台上无条件地调用init(),之后ANSI输出应该可以正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51229559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档