我试图理解Python 库中typ和 的含义。我已阅读此处的
文档。
到目前为止,我已经了解使用安全加载器,该加载器省略了 YAML 中的 YAML 标记解析(它们可能导致任意代码执行)。我在文档中
没有找到有关往返解析器的任何解释。pure=Trueruamel.yamltyp='safe'typ='rt'
另外,我认为解释pure=True很混乱:
提供
pure=True强制使用纯 Python 实现(如果可能/可用,将使用更快的 C 库)
是否使用更快的 C 库pure=True?如果确实如此,为什么您需要首先指定此标志?
我希望能够在 python 中读取 YAML jinja 配置文件,就像使用 PyYAML 库一样,但我收到错误:
{% set name = "abawaca" %}
{% set version = "1.00" %}
package:
name: {{ name }}
version: {{ version }}
source:
fn: {{ name }}-{{ version }}.tar.gz
url: https://github.com/CK7/abawaca/archive/v{{ version }}.tar.gz
sha256: 57465bb291c3a9af93605ffb11d704324079036205e5ac279601c9e98c467529
build:
number: 0
requirements:
build:
- gcc # [not osx]
- llvm # [osx]
Run Code Online (Sandbox Code Playgroud) 我正在尝试加载 jinja2 格式的 yaml 文件并“评估”/“渲染”模板。在这里,举个例子:
{% set name = "pyexcel-ezodf" %}
{% set version = "0.3.3" %}
package:
name: {{ name|lower }}
version: {{ version }}
Run Code Online (Sandbox Code Playgroud)
我希望能够加载 yaml 文件并表示 yaml['package']['version']=0.3.3
我必须尝试 ruamel YAML,但它不评估版本,只给我一个包。
这里是Python代码:
yaml = YAML(typ='jinja2')
yaml.allow_duplicate_keys = True
yaml.explicit_start = True
yaml_content = yaml.load(content)
print (yaml_content['package'])
Run Code Online (Sandbox Code Playgroud)