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 cmd.exe中的颜色,而无需使用Ansicon修补它.修补后,ANSI颜色代码将无需使用colorama(这对我来说也不起作用).
要使用Ansicon修补cmd.exe,请执行以下操作:
ansicon.exe –i通过:https://stackoverflow.com/a/4749307/191902
此外,如果您有NVidia显卡,则可能需要将环境变量"ANSICON_EXC"设置为"nvd3d9wrap.dll".
我意识到这是一个非常古老的问题,但现有的答案都没有帮助我,所以我发布我的解决方案,以防其他人也有同样的情况。就我而言,问题是我先导入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.stdout和sys.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)
希望这可以帮助!
这是正常的,因为你没有ANSIWindows 系统。
尝试像tendo.colorer这样的东西,这将为所有平台启用着色。
注意:tendo.colorer 为日志添加颜色,但我相信您会弄清楚如何将它用于其他用途。如果我没有弄错的话,只需在代码之前导入它就可以解决问题。
| 归档时间: |
|
| 查看次数: |
22046 次 |
| 最近记录: |