可以在python中更改默认错误颜色吗?

Sti*_*ack 5 pip colors colorama azure-cli

运行 python 脚本或使用 python 构建的程序时,错误以深红色发出。随着年龄的增长,这对我来说越来越难以阅读,以至于我不得不眯眼、放大或大惊小怪地处理控制台属性并重新运行命令。

我真的不想更改控制台默认值,因为其他程序通常没有这个问题,而且似乎是 Python 不支持主机控制台的颜色设置。我也不知道哪些程序可能是用 python 构建的(例如 Azure CLI)来提前设置颜色。

有没有办法将python想要用于错误的DarkRed更改为更容易区分的颜色,例如“常规”红色?对于在我的机器上运行的任何 py 脚本或程序?

在此处输入图片说明

编辑:这是调用使用 Python 和深红色编写的程序的示例。我的 py 脚本库在我的工作计算机上。 在此处输入图片说明

EDIT2:它的 pip 是另一个使用深红色的东西。 在此处输入图片说明

Sra*_*raw 2

第一,python是无辜的。罪魁祸首就是azure-cli它自己。knack它使用一个名为配置的库logging。并knack用于colorama配置彩色输出。

但问题是,REDincolorama\033[31m。这就是你所看到的,有点像暗红色。

所以解决办法很简单,我们手动修改那个knack包。

假设你的azure-cli安装在C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2.

  1. 然后转到C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\Lib\site-packages,删除该knack目录或重命名它。
  2. 前往https://github.com/Microsoft/knack,下载软件包。在第47行添加一行:
class _CustomStreamHandler(logging.StreamHandler):
    COLOR_MAP = None

    @classmethod
    def get_color_wrapper(cls, level):
        if not cls.COLOR_MAP:
            import colorama

            def _color_wrapper(color_marker):
                def wrap_msg_with_color(msg):
                    return '{}{}{}'.format(color_marker, msg, colorama.Style.RESET_ALL)
                return wrap_msg_with_color

            colorama.Fore.RED = "\033[31;1m"  # <- add this line
            cls.COLOR_MAP = {
                logging.CRITICAL: _color_wrapper(colorama.Fore.RED),
                logging.ERROR: _color_wrapper(colorama.Fore.RED),
                logging.WARNING: _color_wrapper(colorama.Fore.YELLOW),
                logging.INFO: _color_wrapper(colorama.Fore.GREEN),
                logging.DEBUG: _color_wrapper(colorama.Fore.CYAN)
            }

        return cls.COLOR_MAP.get(level, None)
    ...
Run Code Online (Sandbox Code Playgroud)
  1. 将修改后的包复制到相应位置。
  2. 再测试一下。
  3. 冰棒吧!