【问题标题】:How to validate yaml file from python script?如何从 python 脚本验证 yaml 文件?
【发布时间】:2021-01-03 06:41:42
【问题描述】:

验证 yaml 文件的好方法是什么?

任何用于验证 yaml 文件的 python 脚本/模块?

有效

pipelines:
- name: some_name

pycharm中的颜色变化

pipelines:
- name:check

pycharm中的颜色变化

pipelines:
-name: check

对于以上 3 种情况,我们可以看到参数颜色的变化。 我们能否处理这些场景以及 yaml 文件(或任何标准架构)的任何其他扩展验证?

【问题讨论】:

    标签: python-3.x yaml


    【解决方案1】:

    所有三个示例都是有效的 YAML。它们只是代表不同的数据。您可能想要做的是根据您的期望验证实际结构。由于没有标准的方法来定义 YAML 文档的结构(例如 JSON Schema for JSON),因此没有标准的方法来验证它。

    话虽如此,您可以使用 Python 的 typing 包来定义所需的结构,然后使用 typeguard 包来验证加载的结构:

    from typing import TypedDict, List
    from typeguard import check_type
    import yaml
    
    class PipelineItem(TypedDict):
      name: str
    
    class MyYamlSchema(TypedDict):
      pipelines: List[PipelineItem]
    
    file = """
    pipelines:
    - name: some_name
    """
    
    data = yaml.safe_load(file)
    check_type("data", data, MyYamlSchema)
    

    这将引发第二种和第三种情况的异常。

    此解决方案需要 Python 3.8。

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 2011-06-28
      • 2019-06-12
      • 1970-01-01
      • 2011-03-16
      • 2022-12-18
      • 1970-01-01
      • 2012-08-31
      相关资源
      最近更新 更多