Python读取和存储yaml文件的方法

 更新时间:2021年10月17日 14:06:10   作者:Together_CZ  
本文主要介绍了Python读取和存储yaml文件的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

         YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。

        YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

基本语法

大小写敏感
使用缩进表示层级关系
缩进不允许使用tab,只允许空格
缩进的空格数不重要,只要相同层级的元素左对齐即可
'#'表示注释

数据类型

YAML 支持以下几种数据类型:
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值

关于yaml的简单介绍就到这里,今天需要用Python来读取/存储yml文件,废话补多少,直接看具体的操作:

#!usr/bin/env python
# encoding:utf-8
from __future__ import division
 
 
"""
__Author__:沂水寒城
功能: yaml 操作
"""
 
 
import sys
import yaml
 
 
def write2Yaml(data, save_path="test.yaml"):
    """
    存储yaml文件
    """
    with open(save_path, "w") as f:
        yaml.dump(data, f)
 
 
def loadData(data="config.yaml"):
    """
    加载yaml文件
    """
    with open(data, "r") as f:
        content = f.read()
    yamlData = yaml.load(content)
    print("yamlData_type: ", type(yamlData))
    print("yamlData: ", yamlData)
    return yamlData
 
 
if __name__ == "__main__":
    data = {
        "kind": "SeldonDeployment",
        "spec": {
            "name": "test-deployment",
            "predictors": [
                {
                    "graph": {
                        "endpoint": {"type": "REST"},
                        "type": "MODEL",
                        "name": "step_one",
                        "children": {
                            "endpoint": {"type": "REST"},
                            "type": "MODEL",
                            "name": "step_two",
                            "children": {
                                "endpoint": {"type": "REST"},
                                "type": "MODEL",
                                "name": "step_three",
                                "children": [],
                            },
                        },
                    },
                    "componentSpecs": [
                        {
                            "spec": {
                                "containers": [
                                    {
                                        "image": "seldonio/step_one:1.0",
                                        "name": "step_one",
                                    },
                                    {
                                        "image": "seldonio/step_two:1.0",
                                        "name": "step_two",
                                    },
                                    {
                                        "image": "seldonio/step_three:1.0",
                                        "name": "step_three",
                                    },
                                ]
                            }
                        }
                    ],
                    "name": "example",
                    "replicas": 1,
                }
            ],
        },
        "apiVersion": "machinelearning.seldon.io/v1alpha2",
        "metadata": {"name": "seldon-model"},
    }
 
 
    write2Yaml(data, save_path="test.yaml")
 
    yamlData = loadData(data="test.yaml")
 
 
    print(yamlData == data)
 

上述测试用的test.yaml文件如下:

apiVersion: machinelearning.seldon.io/v1alpha2
kind: SeldonDeployment
metadata:
  name: seldon-model
spec:
  name: test-deployment
  predictors:
  - componentSpecs:
    - spec:
        containers:
        - image: seldonio/step_one:1.0
          name: step_one
        - image: seldonio/step_two:1.0
          name: step_two
        - image: seldonio/step_three:1.0
          name: step_three
    graph:
      children:
        children:
          children: []
          endpoint:
            type: REST
          name: step_three
          type: MODEL
        endpoint:
          type: REST
        name: step_two
        type: MODEL
      endpoint:
        type: REST
      name: step_one
      type: MODEL
    name: example
    replicas: 1

        在上述代码中可以看到我操作的yaml文件后缀都写的是yaml,其实写成yml也是可以的。如下所示:

到此这篇关于Python读取和存储yaml文件的方法的文章就介绍到这了,更多相关Python读取和存储yaml文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 消费 kafka 数据教程

    python 消费 kafka 数据教程

    今天小编就为大家分享一篇python 消费 kafka 数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 总结python爬虫抓站的实用技巧

    总结python爬虫抓站的实用技巧

    很多人学用python,用得最多的还是各类爬虫脚本:有写过抓代理本机验证的脚本,有写过自动收邮件的脚本,还有写过简单的验证码识别的脚本,那么我们今天就来总结下python爬虫抓站的一些实用技巧。
    2016-08-08
  • linux环境下python中MySQLdb模块的安装方法

    linux环境下python中MySQLdb模块的安装方法

    这篇文章主要给大家介绍了在linux环境下python中MySQLdb模块的安装方法,文中给大家介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • python实现MySQL 数据库表格创建 数据插入及获取插入ID操作教程

    python实现MySQL 数据库表格创建 数据插入及获取插入ID操作教程

    这篇文章主要为大家介绍了python实现MySQL 数据库表格创建 数据插入及获取插入ID操作教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Pycharm搭建一个Django项目的方法步骤

    Pycharm搭建一个Django项目的方法步骤

    本文主要介绍了Pycharm搭建一个Django项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python wxpython模块响应鼠标拖动事件操作示例

    Python wxpython模块响应鼠标拖动事件操作示例

    这篇文章主要介绍了Python wxpython模块响应鼠标拖动事件操作,结合实例形式分析了Python使用wxpython模块创建窗口、绑定事件及相应鼠标事件相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • Django视图函数的具体使用

    Django视图函数的具体使用

    这篇文章主要介绍了Django视图函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • python简单的三元一次方程求解实例

    python简单的三元一次方程求解实例

    这篇文章主要介绍了python简单的三元一次方程求解实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python3.7实现中控考勤机自动连接

    Python3.7实现中控考勤机自动连接

    这篇文章主要为大家详细介绍了Python3.7实现中控考勤机自动连接,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Python实现如何根据文件后缀进行分类

    Python实现如何根据文件后缀进行分类

    本文主要为大家详细介绍了如何通过python实现根据文件后缀实现分类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以关注一下
    2021-12-12

最新评论