Python2.7:如何重定向带有颜色的文本

时间:2018-07-08 06:53:44

标签: python python-2.7

我想在Python 2.7和Linux中的以下代码中为文本添加颜色。

  $('#customerSearch').on('input', function(){
     $('#customerSearch').trigger('keydown');
  });

可以在终端中以彩色打印文本。但是,在像“ python script.py | cat”那样进行配管后,颜色将被删除。 我猜想Python会根据输出tty删除颜色。如何实现import colorama colorama.init( strip=False ) print( colorama.Fore.RED + "Hello World!" + colorama.Fore.RESET ) grep --color=always之类的行为。

1 个答案:

答案 0 :(得分:1)

该库的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()将从所有发送到stdout或stderr的文本中过滤出ANSI转义序列,并用等效的Win32调用替换它们。

     

在其他平台上,调用init()无效(除非您请求其他可选功能;请参见下面的“ Init Keyword Args”)。根据设计,这允许应用程序在所有平台上无条件调用init(),此后ANSI输出应该可以正常工作。