【问题标题】:Python 3 bug print background color issuePython 3错误打印背景颜色问题
【发布时间】:2020-09-24 12:59:10
【问题描述】:

在 Python 3 中使用 ANSI 转义码为print 的输出着色的标准命令似乎不起作用。

我相信,这与最新版本的 Python 3 所带来的变化有关。

我的系统: Python 3.7.3、Windows 10、IDLE。

虽然它在Python 2.7 上运行良好,但在Python 3.7 上它根本不起作用。

  • print("\033[1;32;40m Bright Green \n") 处于空闲状态,如此 article 输出 [1;32;40m Bright Green 所示。相反,这在提供彩色背景的在线 Python 2 解析器上运行良好。

  • 发现在Python 3 上的转义字符是\x1b 而不是\033print 语句中的修改表达式,例如 IDLE 中的 print("\x1b[1;32;40m Bright Green \n") 输出 [1;32;40m Bright Green 并且没有彩色背景。

  • py 文件上运行print("\033[1;32;40m Bright Green \n") 仍会输出[31;1;4mHello[0m
  • 由于我的本地系统之间存在差异,我尝试在在线Python 3 解析器print("\033[1;32;40m Bright Green \n") 上运行,它给了我[1;32;40m Bright Green

这种 ANSI 转义码的使用主要是作为链接中的一种解决方案提供的。

我做错了什么?

【问题讨论】:

  • “与最新版本的 Python 3 所带来的变化有关” - 你使用的是哪个版本,它在哪些版本中工作?什么平台?
  • 我的版本是Python 3.7.3,平台是Windows 10
  • 这在早期版本中是否有效?你读过例如stackoverflow.com/q/12492810/3001761?
  • 您的本地环境和在线解析器之间可能存在其他差异 - 在线解析器是否显示 Python 3 中的颜色? Python 2 IDLE 是否在本地显示它们? IDLE 之外呢?
  • 我可以在 IDLE 2.7 中确认 print("\033[1;32;40m Bright Green \n") 打印到控制台 [1;32;40m Bright Green (tkinter Text 小部件无法处理转义并且该功能尚未手动添加到 IDLE)。

标签: python python-3.x


【解决方案1】:

根据您使用的是终端还是 IDLE,您需要使用不同的代码。对于终端有很多方法可以做到,但是对于IDLE,下面是我找到的方法。

使用sys.stdout.shell.write(to_print, color),变量颜色是下面的字符串之一

您可以使用以下颜色:

  • 内置
  • 字符串
  • 控制台
  • 评论
  • 标准输出
  • 标准错误
  • 点击
  • 定义
  • 关键字
  • 错误
import sys

try:
    color = sys.stdout.shell
    color.write("Hi? \n","STRING")
except AttributeError:
    raise RuntimeError("Use IDLE")

【讨论】:

    【解决方案2】:

    python 彩色库可以正常工作。 ANSI 转义码没有那么流畅。

    pip install colored之后你可以在from colored import stylized之后

    然后尝试- print(stylize("This is green.", colored.fg("green")))

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 2014-07-23
      • 2011-08-29
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      相关资源
      最近更新 更多