【问题标题】:How to fix windows escape characters not working correctly in python?如何修复 Windows 转义字符在 python 中无法正常工作?
【发布时间】: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


【解决方案1】:

查看 eryksun 的评论:colorama.init() 修改 sys.stdout 以使输出正确显示颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 2012-09-11
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多