从 YAML 文件加载 shell 颜色代码

Load shell color codes from YAML file

如何使用 ruamel yaml 从 yaml 文件加载我的 shell 的颜色代码?##

我可以通过 python 使用一些非常简单的指令来更改 shell 中的颜色:

R = "3[0;31;40m"
print(R+"TEST")

这将以红色输出“TEST”。 (为简单起见,我没有重新设置样式)

我有以下 YAML 文件:

colors:
  red : 3[0;31;40m

我尝试实现从 YAML 文件加载颜色代码的相同目的,但它确实输出 3[0;31;40mTEST。这是我的代码。 (我试过不同的加载类型、引号、转义它,但我似乎无法让它工作。我知道这是出于安全原因而发生的。)

import ruamel.yaml

path_to_config = "config/config.yml"

yaml = ruamel.yaml.YAML(typ="safe")

with open(path_to_inventory) as fpi:
    config = yaml.load(fpi)

print(config["colors"]["red"]+"TEST")

只有在双引号之间的反斜杠在 YAML 中才有特殊含义。要知道您的 YAML 应该是什么样子,最好转储您想要的结果:

yaml.dump("3[0;31;40m", sys.stdout)

给出:

"\e[0;31;40m"

因此:

colors:
  red : "\e[0;31;40m"

你应该没事的。

YAML 文件的推荐扩展名自 2007 年以来一直是 .yaml