yaml 使用规则/ 规范
安装使用:(python当中使用)
安装: pip install pyyaml
使用:直接导入: import yaml
简单使用:例
例: 1、读取yaml数据: with open(file="conf.yaml", encoding='utf8') as f: data = yaml.load(f, yaml.FullLoader) #data = yaml.load(f) #如果运行data = yaml.load(f) 会出现警告提示: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details. 加上yaml.FullLoader参数在load()内可以实现去除显示 2、写入yaml数据(mode参数:w,覆盖写入, a,追加写入) data = {'name': 'Tom'} with open(file="conf.yaml", mode='w', encoding="utf-8") as f: yaml.dump(data, f)
以下说说yaml使用的语法规则:
=========================
yaml使用语法规则:
1.区分大小写
2.使用缩进表示层级关系
3.不允许使用 TAB 键来缩进,只能用空格
4.缩进空格具体数量不用太注重,相同层级的元素左侧对齐即可
5.使用 # 来表示注释
支持使用的结构体:
1.键值对象:键值对的集合,又称映射 (mapping) / 哈希(hashes)/ 字典(dictionary)
2.数组: 一组按次序排列的值,又称序列 (sequence) / 列表 (list)
3.纯量 (scalars) :单个的,不可再分的值。常见的纯量: 字符串、布尔值、整数、浮点数、null、时间、日期
编写规范:
1、文档使用 Unicode 编码作为字符标准编码,例如utf-8 2、使用#表示注释 3、使用空格作为嵌套缩进,一般建议使用2个空格来缩进使用
4、在数组中(序列 / 列表)使用: 4.1使用- (横线) + 单个空格:表示单个列表项 --- #开始 - one - two
4.2使用[ ]:表示一组数据 --- #开始 [username , password]
4.3组合表示 (每个结构都可嵌套成复杂的结构) --- #开始 - [username , password] # 列表项本身也是一个列表 - [Age , sex] - site: { blogs:www.cnblogs.com , baidu: www.baidu.com } # 这里是组合表示 5、在键值对象中使用: 5.1使用:(冒号)+单个空格: 表示单个键值对 --- #开始 date: 2020-07-22 customer: - name: qika items: - no: 123456
5.2使用{ }:表示一个键值表 --- #开始 date: 2020-07-22 customer: - name: qika items: {no: 123456, descript: mobilephone, price: ¥800.00}
5.3使用"? " (问号)+空格:表示复杂的键。 当键是一个列表或键值表时,就需要使用本符号来标记 # 使用一个列表作为键 ? [blue, reg, green]: Color
5.4组合表示:嵌套使用复杂结构体 Color: - blue - red - green # 相当于 (也是 JSON 的表示) {Color: [blue, red, green]} div: - border: {color: red, width: 2px} - background: {color: green} - padding: [0, 10px, 0, 10px] # 使用缩进表示的键值表与列表项 items: - item: cpu model: i3 price: ¥800.00 - item: HD model: WD price: ¥450.00 # 使用 “-” 来表示多个列表项,相当于JSON格式: items: [{item:cpu, model:i3, price:¥800.00}, {item:HD, model:WD, price: ¥450.00}] 6、结合文本使用: 6.1、使用 “|” 和文本内容缩进表示的块:保留块中已有的回车换行。相当于段落块 # 注意 ":" 与 "|" 之间的空格 yaml: | JSON的语法其实是YAML的子集,大部分的JSON文件都可以被YAML的解释器解释。
6.2、使用 “>” 和文本内容缩进表示的块:将块中回车替换为空格,最终连接成一行 # 注意 ":" 与 ">" 之间的空格,另外可以使用空行来分段落 yaml: > JSON的语法其实是YAML的子集, 大部分的JSON文件都可以被YAML的解释器解释。
6.3、使用定界符“”(双引号)、‘’(单引号)或回车表示的块:最终表示成一行 yaml: # 使用回车的多行,最终连接成一行。 JSON的语法其实是YAML的子集, 大部分的JSON文件都可以被YAML的解释器解释。 如: yaml: # 使用了双引号,双引号的好处是可以转义,即在里面可以使用特殊符号 "JSON的语法其实是YAML的子集, 大部分的JSON文件都可以被YAML的解释器解释。"
6.4、当数据中含有空格或任意特殊字符,需要使用引号来包裹任何包含冒号的哈希值, 像这样:foo: "someone: ilikeit" # 然后这个冒号将会被结尾. 7、数据类型约定显示 7.1常用数据类型表示 integer: 12345 # 整数标准形式 octal: 0o34 # 八进制表示,第二个是字母 o hex: 0xFF # 十六进制表示 float: 1.23e+3 # 浮点数 fixed: 13.67 # 固定小数 minmin: -.inf # 表示负无穷 notNumber: .NaN # 无效数字 null: # 空值 boolean: [true, false] # 布尔值 string: ‘12345‘ # 字符串 date: 2015-08-23 # 日期 datetime: 2015-08-23T02:02:00.1z # 日期时间 iso8601: 2015-08-23t21:59:43.10-05:00 # iso8601 日期格式 spaced: 2015-08-23 21:59:43.10 -5 # ? 7.2“!”(叹号)显式指示类型,或自定义类型标识。单叹号通常是自定义类型,双叹号是内置类型 isString: !!str 2015-08-23 # 强调是字符串不是日期数据 picture: !!binary | # Base64 图片 R0lGODlhDAAMAIQAAP//9/X 17unp5WZmZgAAAOfn515eXv Pz7Y6OjuDg4J+fn5OTk6enp 56enmleECcgggoBADs= #下面是内置类型 !!int # 整数类型 !!float # 浮点类型 !!bool # 布尔类型 !!str # 字符串类型 !!binary # 也是字符串类型 !!timestamp # 日期时间类型 !!null # 空值 !!set # 集合 !!omap, !!pairs # 键值列表或对象列表 !!seq # 序列,也是列表 !!map # 键值表 #下面是一些例子: --- !!omap - Mark: 65 - Sammy: 63 - Key: 58 --- !!set # 注意,“?”表示键为列表,在这里列表为 null ? Mark ? Sammy ? Key # 下面是自定义的类型或标识 %TAG ! tag:clarkevans.com,2002: # % 是指令符号 --- !shape # Use the ! handle for presenting # tag:clarkevans.com,2002:circle - !circle center: &ORIGIN {x: 73, y: 129} radius: 7 - !line start: *ORIGIN finish: { x: 89, y: 102 } - !label start: *ORIGIN color: 0xFFEEBB text: Pretty vector drawing.