【问题标题】:ANSI escape code wont work on python interpreterANSI 转义码在 python 解释器上不起作用
【发布时间】:2019-08-30 22:38:22
【问题描述】:

ANSI 代码无法在我的 python 解释器上运行

我想为我的项目上的一些照片上色。我查看了如何为打印字符着色并找到了 ANSI 转义码,所以我在解释器上尝试了它,但它不起作用。

例如:

print("\033[32m Hello")

它给了我<-[32m Hello(一个左箭头符号)。

我如何使它工作?它可以在python的解释器上工作吗?如果没有,我应该在哪里使用它?

【问题讨论】:

  • 我无法重现这个。当我将print("\033[32m Hello") 放入文件test.py 并在我的Unix 终端中运行python2 test.pypython3 test.py 时,我得到Hello 以绿色书写。我看到 \033 在 CP437 中是左箭头。您是否尝试在 Windows 上执行此操作?您是否已经手动安装了解释 ANSI 转义所需的 Windows 软件?
  • 可能是你的终端应用不支持吧?你用的是什么终端应用?
  • Python 解释器与 ANSI 转义序列无关。听起来您使用的是 Windows,因此您需要安装一些使 WIndows 控制台支持它们的东西。
  • @martineau shell 不在应用程序和终端之间的 I/O 路径中。
  • @martineau 实际上内置终端(或 Windows 术语中的“控制台”)不是由 cmd.exe 提供的,而是由控制台主机 (conhost.exe) 和 ClientServer 运行时系统服务 ( csrss.exe)。见howtogeek.com/howto/4996/…

标签: python ansi-escape


【解决方案1】:

您最好安装其他软件包来帮助生成 ANSI 序列,iirc win32 控制台does not support ANSI 颜色。一种选择是安装colorama。下面的 sn -p 打印出红色文本。

import colorama
from colorama import Fore, Back, Style
colorama.init()
print(Fore.RED + 'This is red')

编辑:经过进一步研究,我意识到 Windows 10 has support 用于 ANSI 转义序列,您可以通过调用来实现。如果您打算复制和粘贴,请使用this

import os
os.system("echo [31mThis is red[0m")

不过我还是更喜欢前者。

【讨论】:

    【解决方案2】:

    您可能正在使用 IDLE... 在这种情况下,您不能使用 ANSI 颜色; IDLE '终端' 并不是真正的终端,因此 ANSI 代码将显示为一个字符,无论您键入 chr(0x1B)\033 还是 \x1b;都是一样的。

    你的箭头字符正常;我只是得到一个框,因为我猜默认字体不支持左箭头...?

    但是 @thatotherguy 的解释可能是正确的...除非您使用的是 IDLE,因为在这种情况下它肯定是问题所在。

    【讨论】:

      【解决方案3】:

      注意,这是question可能重复,此post 已回答。为方便起见,@gary-vernon-grubb答案重申发布在下方。


      使用os.system('') 确保正确处理ANSI 转义序列。下面是 Windows 命令提示符中的一个示例:

      确保ANSI 转义序列和颜色代码之间没有空格!这对我来说有点头疼。

      【讨论】:

        猜你喜欢
        • 2015-07-11
        • 2011-05-05
        • 1970-01-01
        • 2021-04-17
        • 1970-01-01
        • 1970-01-01
        • 2021-06-28
        • 2020-07-20
        • 1970-01-01
        相关资源
        最近更新 更多