yaml 学习笔记

2023-11-19

yaml学习

​ 配置(Yet Another Markup Language)(发音 /ˈjæməl/ )

1. yaml文件规则

1、区分大小写;

2、使用缩进表示层级关系;

3、使用空格键缩进,而非Tab键缩进

4、缩进的空格数目不固定,只需要相同层级的元素左侧对齐;

5、文件中的字符串不需要使用引号标注,但若字符串包含有特殊字符则需用引号标注;

6、注释标识为 #

2. 使用前提

1、pip3 install pyyaml

2、import yaml

3.Python 使用

1、读取文件数据

rf = open(yaml_file_path)
dict_datas = yaml.load(rf)  # 将数据转化为列表或者字典

2、yaml文件中基本数据类型

# 实例(中间一定要用空格隔开)		对应的类似Python字典格式

s_val: name              			# 字符串:{'s_val': 'name'}

spec_s_val: "name\n"    			# 特殊字符串:{'spec_s_val': 'name\n'

num_val: 31.14          			# 数字:{'num_val': 31.14}

bol_val: true           			# 布尔值:{'bol_val': True}

nul_val: null           			# null值:{'nul_val': None}

nul_val1: ~             			# null值:{'nul_val1': None}

time_val: 2018-03-01t11:33:22.55-06:00     
# 时间值:{'time_val': datetime.datetime(2018, 3, 1, 17, 33, 22, 550000)}

date_val: 2019-01-10    			
# 日期值:{'date_val': datetime.date(2019, 1, 10)}

3、嵌套数组

# {"test": [1, 2]}
test:
 - 1
 - 2
# test2 = [{"host": "host1", "port": "port1"}, {"host": "host2", "port": "port2"}, {"host": "host3", "port": "port3"}]
test2:
 -
  host: host1
  port: port1
 -
  host: host2
  port: port2
 -
  host: host3
  port: port3

4、锚点和应用

# &	表示将localhost1作为localhost的别名
# <<	表示将*localhost1代表的map合并入当前map数据
# test2 = [{"host": "127.0.0.1", "port": 3306, "db": "db1"}, {"host":  "127.0.0.1", "port": 3306, "db": "db2"}, {"host":  "127.0.0.1", "port": 3306, "db": "db3"}]
host: &host
 host: 127.0.0.1
 post: 3306
test3:
 -
  <<: *host
  db: db1
 -
  <<: *host
  db: db2
 -
  <<: *host
  db: db3

4、多个yaml文档和生成yaml

1、多个文档在一个yaml文件,使用 ( 换行)分隔方式来分段;读取时:用yaml.load_all()

import yaml

with open('test.yaml', 'r') as rf:
    datas = yaml.load_all(rf) # datas 是迭代器
    for data in datas:
        print data, type(data)

2、yaml库 将数据生成到yaml文档中

with open('test.yaml', 'r') as rf:
    datas = yaml.load(rf)
    with open('test_generate_yaml.yaml', 'w') as af:
        yaml.dump(datas, af)

3、生成的yaml文档不太友好,虽然也都能查到数据。现用 ruamel库 将数据生成标准的yaml文档

# 安装 pip install ruamel.yaml
# 需要加个参数:Dumper=yaml.RoundTripDumper
from ruamel import yaml

data_dict = {'test': [{'1': '1'}, {'2': 2}]}
file = "ruamel_generate_file.yaml"
with open(file, 'w') as wf:
    yaml.dump(data_dict, wf, Dumper=yaml.RoundTripDumper)
    
# 同样也能读取,加参数:Loader=yaml.Loader
from ruamel import yaml

file = "ruamel_generate_file.yaml"
with open(file, 'r') as rf:
    print(yaml.load(rf, Loader=yaml.Loader))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

yaml 学习笔记 的相关文章

随机推荐

  • mysql报错:Host is not allowed to connect to this MySQL server(设置远程连接)

    一般出现在 localhost可以连接mysql 但是远程不行 输入shell命令 mysql u root p 然后输入密码进入mysql mysql命令行输入 use mysql update user set host where u
  • Linux-centos

    目录 一 Linux入门概述 1 1概述 1 2 下载地址 1 3 Linux特点 1 4 Linux和Windows区别 二 Linux目录结构 2 1 概览 2 2 树状目录结构 三 VI VIM编辑器 3 1 概述 3 2 测试数据准
  • 链队列的基本操作

    define CRT SECURE NO WARNINGS 链栈 include
  • Scala语言入门

    Scala入门 一 Scala安装 二 类和对象 1 Scala基本数据类型 2 Scala定义类 3 Scala单例对象 4 伴生对象 5 控制抽象 三 简单语法 1 if else 2 循环 3 方法 4 字符串 5 数组 6 集合 四
  • 你这样写代码会被打!

    编译 Python 开发者 伯乐在线 http python jobbole com 89252 所有人 好吧 不是所有人 都知道 python 是一门用途广泛 易读 而且容易入门的编程语言 但同时 python 语法也允许我们做一些很奇怪
  • 实现物联网,你有使用合适的数据库吗?

    数据正不断影响关键业务的决策 这使得企业开始重新考虑 他们能从物联网中得到什么 如果你觉得物联网世界的不断增长只是一时的狂热 那你就错了 一份关于M2M技术的研究报告表明 到2020年 通过传感器控制 监控以及自动化管理的设备将达到125亿
  • 嵌入式 在开发板显示bmp图片、jpeg图片

    嵌入式 在开发板显示bmp图片 jpeg图片 一 简述 记 在GEC6818开发板 800W 480H 显示24位的bmp图片 使用开源的jpeg库显示jpeg图片 代码 链接 https pan baidu com s 1G3jzvdnc
  • 二叉树11:完全二叉树的节点个数

    主要是我自己刷题的一些记录过程 如果有错可以指出哦 大家一起进步 转载代码随想录 原文链接 代码随想录 leetcode链接 222 完全二叉树的节点个数 题目 给你一棵 完全二叉树 的根节点 root 求出该树的节点个数 完全二叉树 的定
  • QT:(4)解决在VS15下配置QT后没有QT GUI Application选项

    妈呀折腾了一上午终于出来了 其实就是按照其他博客的思路解决的 最主要就是注意一下细节 1 首先卸载之前安装的 注意自动更新扩展一定不要勾选上 2 进入下边网站下载 点击安装即可 本次下载的是2 4 3 https download qt i
  • 一个行程问题与对应的数列求和

    有一个看似简单的路程问题 却涉及到了微积分的收敛 题目如下 一段路程长度140Km 张三 李四两个人从两端骑自行车相向而行 大黄狗和张三在一起 张三速度15Km h 李四速度20Km h 大黄狗25Km h 大黄狗碰到李四 就折回跑向张三
  • office2013 excel 打开时提示excel词典xllex.dll文件丢失或损坏

    今天打开Excel时 发现报错 xllex dll文件丢失或损坏 我用的是office2013 网上找了好多都是2007的dll文件 导入不了 于是乎重装office 问题解决 但还是把xllex dll烤出来做个备份吧 参考下面步骤即可
  • Sublime Text Editor Recommended Settings

    http www cnblogs com dolphin0520 archive 2013 04 29 3046237 html 转载于 https www cnblogs com jast p 4737637 html
  • 8 月份 火火火火 的 GitHub 开源项目

    本期推荐开源项目目录 1 一个清新文艺的微社区 2 虚拟桌宠模拟器 3 Docusign开源替代方案 4 单词肌肉记忆锻炼软件 5 中文对话式大语言模型 01 一个清新文艺的微社区 一个美观清新的微社区开源项目 整套系统使用 Go Zinc
  • OpenCV实战(29)——视频对象追踪

    OpenCV实战 29 视频对象追踪 0 前言 1 追踪视频中的对象 2 中值流追踪器算法原理 3 完整代码 小结 系列链接 0 前言 我们已经学习了如何跟踪图像序列中点和像素的运动 但在多数应用中 通常要求追踪视频中的特定移动对象 首先确
  • Qt实现阴影边框,可拖动,可缩放窗口(二)

    通过paintEvent来实现的 绘制方形的阴影没问题 但是绘制圆角阴影的话 发现圆角不够圆润 而且有断裂的感觉 pragma once include
  • ChatGPT引爆变革:首个被颠覆的行业揭秘!

    随着人工智能的飞速发展 自然语言处理技术逐渐渗透到内容创作领域 作为一种先进的对话型AI系统 ChatGPT正改变着传统的写作方式 本文将探讨ChatGPT如何颠覆内容创作行业 以及其中的一些引人入胜的案例 ChatGPT是基于GPT架构的
  • 蓝牙App设计2:使用Android Studio制作一个蓝牙软件(包含:代码实现等)

    前言 蓝牙聊天App设计全部有三篇文章 一 UI界面设计 二 蓝牙搜索配对连接实现 三 蓝牙连接聊天 这篇文章是 二 蓝牙搜索配对连接实现 课程1 Android Studio小白安装教程 以及第一个Android项目案例 Hello Wo
  • 习题8-8 判断回文字符串 (20分)

    本题要求编写函数 判断给定的一串字符是否为 回文 所谓 回文 是指顺读和倒读都一样的字符串 如 XYZYX 和 xyzzyx 都是回文 函数接口定义 bool palindrome char s 函数palindrome判断输入字符串cha
  • 白月黑羽教python_白月黑羽Python在线教程

    推荐白月黑羽Python在线教程 白月黑羽 站在初学者的角度为大家安排了Python学习教程 帮助大家迅速掌握程序开发技能 http www python3 vip doc tutorial python home 变量 和 注释 本文目录
  • yaml 学习笔记

    yaml学习 配置 Yet Another Markup Language 发音 j m l 1 yaml文件规则 1 区分大小写 2 使用缩进表示层级关系 3 使用空格键缩进 而非Tab键缩进 4 缩进的空格数目不固定 只需要相同层级的元