YAML的数据结构及其封装
2019-11-08 本文已影响0人
猪儿打滚
基础语法规则
- 大小写敏感
- 使用空格缩进来表示层级关系
- 缩进时,不允许使用Tab键,只允许使用空格
- 缩进的空格数目不重要,同一层级的元素左侧都对齐即可;不对齐则属于不同层级的元素
-
#
:行注释
数据结构
1、YAML支持三种数据结构:
- 对象:
{}
key-value的集合,又称为映射(mapping)、哈希(hashes)、字典(dictionary) - 数组:
[]
一组按照顺序排列的值,又称为序列(sequence)、列表(list) - 纯量/scalars
单个、不可拆分的、原子性的值:str、int、float、boolean、Null、时间、日期
2、YAML对应的数据结构表达方式
- 对象
# 常用::号表示
animal: cat
cat: "橘猫"
# 或者:{}
animal:{name: cat, colour: orange}
- 数组
# 常用:-号表示
- cat
-dog
- bird
# 或者:[]表示
animal:[cat, dog]
- 对象+数组
animal:
- cat
- dog
- bird
languages:
- java
- python
- js
- 纯量
# 特殊:字符串有五种表现格式
str: 我是字符串
str: '内容:字符串'
str: '内容\n字符串'
str: "内容\n字符串"
str: 'today''hahaha'
YAML的两种写法
- 1.使用常用方式来书写
animal:
cat:
name: 哈皮
hobby:
- 玩耍
- 晒太阳
eat:
- 猫粮
- 鸡胸肉
address:
number: 1
city: 广州
- 2.不常用的方法
animal:
cat: {cat:哈皮, hobby: [玩耍, 晒太阳], eat: [猫粮, 鸡胸肉]}
address: {number: 1, city: 广州}
安装
pip install pyyaml --trusted-host http://pypi.douban.com/
封装常用的读写即可
import yaml
class ComYaml:
def __init__(self):
pass
def read_yaml(self, filepath):
try:
return yaml.load(open(filepath, 'r', encoding='utf-8'), Loader=yaml.FullLoader)
except Exception as es:
print(F'读取{filepath}文件出错,错误是{es}')
return False
def write_yaml(self, filepath, data, mode='w'):
try:
with open(filepath, mode, encoding='utf-8') as f:
yaml.dump(data, f)
return True
except Exception as es:
print(F'内容:{data}\n写入{filepath}文件出错,错误是{es}')
return False