zoukankan      html  css  js  c++  java
  • 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, 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.
  • 相关阅读:
    总结几个面试题
    产生下一个排列数的算法
    所谓码农
    简记微软实习生面试
    二维数组作为函数的参数传递
    详细解说 STL 排序(Sort)
    copy()之绝版应用
    STL标准模板库(简介)
    访问控制和继承方式
    常用软件开发模型比较分析
  • 原文地址:https://www.cnblogs.com/QiKa/p/13418203.html
Copyright © 2011-2022 走看看