Python的Colorama,不返回Windows上的彩色打印行

Mik*_*ike 14 python windows ansi

我为python安装了colorama.我按如下方式导入了模块:

import colorama
from colorama import init
init()
from colorama import Fore, Back, Style

print Fore.RED + "My Text is Red"
Run Code Online (Sandbox Code Playgroud)

它返回ANSI字符....

esc[31mMy Text is Red
Run Code Online (Sandbox Code Playgroud)

这不是我的预期.难道我做错了什么.

谢谢.

hrb*_*bdg 16

我在Windows 7 x64上遇到了同样的问题,我终于通过将参数添加convert=True到init调用中而无需安装任何新的颜色.

from colorama import init, Fore, Back, Style

init(convert=True)

print(Fore.RED + 'some red text')
Run Code Online (Sandbox Code Playgroud)

  • 我在 Windows 10 上使用它,但它不起作用。它不显示颜色 (2认同)

Sea*_*nch 5

我没有成功使用Windows cmd.exe中的颜色,而无需使用Ansicon修补它.修补后,ANSI颜色代码将无需使用colorama(这对我来说也不起作用).

要使用Ansicon修补cmd.exe,请执行以下操作:

  1. https://github.com/adoxa/ansicon/downloads下载Ansicon   并将其解压缩到一个没有空格的目录中
  2. 使用cmd提示符并导航到解压缩它的位置.
  3. CD进入x64目录(除非你有32位机器,然后使用x86一个)
  4. 类型 ansicon.exe –i
  5. 打开一个新的cmd提示符

通过:https://stackoverflow.com/a/4749307/191902

此外,如果您有NVidia显卡,则可能需要将环境变量"ANSICON_EXC"设置为"nvd3d9wrap.dll".


Jos*_*hua 5

我意识到这是一个非常古老的问题,但现有的答案都没有帮助我,所以我发布我的解决方案,以防其他人也有同样的情况。就我而言,问题是我先导入stdout然后sys初始化colorama,这不起作用:

>>> from colorama import Fore, Style, init
>>> from sys import stdout
>>> init()
>>> stdout.write(Fore.RED + Style.BRIGHT + "Test" + Style.RESET_ALL + "\n")
[31m[1mTest[0m
Run Code Online (Sandbox Code Playgroud)

根据https://pypi.org/project/colorama,这是因为:

在 Windows 上,colorama 通过替换sys.stdoutsys.stderr代理对象来工作,代理对象重写.write()方法来完成其工作。

因此,我需要在它被替换stdout 导入,作为调用的一部分init

>>> from colorama import Fore, Style, init
>>> init()
>>> from sys import stdout
>>> stdout.write(Fore.RED + Style.BRIGHT + "Test" + Style.RESET_ALL + "\n")
Test      <--- This is now bright red.
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


sor*_*rin 1

这是正常的,因为你没有ANSIWindows 系统。

尝试像tendo.colorer这样的东西,这将为所有平台启用着色。

注意:tendo.colorer 为日志添加颜色,但我相信您会弄清楚如何将它用于其他用途。如果我没有弄错的话,只需在代码之前导入它就可以解决问题。