【发布时间】:2019-04-25 14:16:29
【问题描述】:
我目前正在尝试让 python 在 Windows 终端中显示彩色文本。不幸的是,转义序列没有被正确解释。
起初,我尝试使用不同的库,包括“蜡笔”、“termcolor”和“colorama”。不幸的是,这些显示出与我的代码类似的问题。
print(str('\033[31m' + 'this should be red'))
输出应该是文本“这应该是红色的”,但是是红色而不是标准的白色。实际输出是“[31msome red text”,为白色,并带有一个奇怪的特殊字符,显示为一个带有问号的框。
【问题讨论】:
-
print调用示例应该适用于 colorama。你是通过colorama.init()启用的吗? -
在 colorama 中使用 Fore.RED 时,我得到“NameError: name 'Fore' is not defined”
-
所以我开始指定导入“Fore,Style,Back”,它终于可以工作了,但是有什么解释为什么在导入整个模块时没有导入这些? python不会自动从模块中导入所有内容吗?
-
导入设置对导入命名空间中模块的引用。如果模块尚未缓存在
sys.modules中,则导入还会实例化模块对象并将其代码编译为字节码(如果尚未缓存在 .pyc 文件中)并在模块的 dict 命名空间中执行它。您可以更改导入的模块名称,例如import colorama as color。或者,如果您想要其公共命名空间(或在__all__中定义的任何内容)的浅表副本,您可以使用from colorama import *。但是,不鼓励这两种做法。 -
如果你调用
colorama.init(),它会修改sys.stdout以支持常见的虚拟终端转义,所以你可以简单地使用print('\033[31m' + 'this should be red')。
标签: python windows escaping textcolor