python_配置文件_YAML.yml

python_配置文件_YAML.yml_第1张图片
  • YAML文件

  • 简介:YAML结构(Structure)通过空格来展示。序列(Sequence)里的项用"-"来代表,Map里的键值对用":"分隔.
  • 在YAML中,字串不一定要用双引号标示。另外,在缩排中空白字符的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(不过不能使用TAB字符)。
  • test.yaml

---
receipt: Oz-Ware Purchase Invoice
date: 2012-08-06
customer: 
      given: Dorothy 
      family: Gale 
items:
      - part_no: A4786 
      descrip: Water Bucket (Filled) 
      price: 1.47 
      quantity: 4

      - part_no: E1628 
      descrip: High Heeled "Ruby" Slippers 
      size: 8 
      price: 133.7 
      quantity: 1

bill-to: &id001 
      street: | 
               123 Tornado Alley 
               Suite 16 
      city: East Centerville 
      state: KS

ship-to: *id001 

specialDelivery: > 
      Follow the Yellow Brick 
      Road to the Emerald City. 
      Pay no attention to the man behind the curtain
....
  • 解读:

注意在YAML中,字串不一定要用双引号标示。另外,在缩排中空白字元的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(不过不能使用TAB字元)。这个文件的的顶层由七个键值组成:其中一个键值"items",是个两个元素构成的阵列(或称清单),这清单中的两个元素同时也是包含了四个键值的杂凑表。文件中重复的部分用这个方法处理:使用锚点(&)和参考(*****)标签将"bill-to"杂凑表的内容复制到"ship-to"杂凑表。也可以在文件中加入选择性的空行,以增加可读性。在一个档案中,可同时包含多个文件,并用"---"分隔。选择性的符号"..."可以用来表示档案结尾(在利用串流的通讯中,这非常有用,可以在不关闭串流的情况下,发送结束讯号)。

  • 应用:

  • 读取.yaml文件:
import yaml  
f = open('d:/tree.yml')  
dataMap = yaml.load(f)  
f.close() 
print dataMap
print type(dataMap)
# 输出结果为字典
  • .yaml文件
import yaml  
f = open('d:/newtree.yaml', "w")  
yaml.dump(dataMap, f)  
f.close()  
  • 语法:

在yaml.org(英文)可以找到轻巧而好用的小抄(亦是用YAML表示)及格式说明。下面的内容,是关于基本元件的摘要。

  • YAML使用可打印的Unicode字元,可使用UTF-8或UTF-16。
  • 使用空白字元为文件缩排来表示结构;不过不能使用跳格字元(TAB)。
  • 注解由井字号( # )开始,可以出现在一行中的任何位置,而且范围只有一行(也就是一般所谓的单行注解)
  • 每个清单成员以单行表示,并用短杠+空白( **- ** )起始。或使用方括号( [ ] ),并用逗号+空白( **, ** )分开成员。
  • 每个杂凑表的成员用冒号+空白(** : ** )分开键值和内容。或使用大括号( { } ),并用逗号+空白( , ** )分开。杂凑表的键值可以用问号 ( ?** )起始,用来明确的表示多个词汇组成的键值。
  • 字串平常并不使用引号,但必要的时候可以用双引号 ( " )或单引号 ( ' )框住。使用双引号表示字串时,可用倒斜线( ** )开始的跳脱字元(这跟C语言类似)表示特殊字元。
  • 区块的字串用缩排和修饰词(非必要)来和其他资料分隔,有新行保留(preserve)(使用符号 | )或新行折叠(flod)(使用符号 > )两种方式。
  • 在单一档案中,可用连续三个连字号(---)区分多个档案。另外,还有选择性的连续三个点号( ... )用来表示档案结尾。
  • 重复的内容可使从参考标记星号 ( ***** )复制到锚点标记( & )。
  • 指定格式可以使用两个惊叹号 (** !!** ),后面接上名称。
  • 档案中的单一文件可以使用指导指令,使用方法是百分比符号(** %** )。有两个指导指令在YAML1.1版中被定义: %YAML 指导指令,用来识别文件的YAML版本。
    %TAG 指导指令,被用在URI的字首标记。这个方法在标记节点的型态时相当有用。
  • YAML再使用逗号及冒号时,后面都必须接一个空白字元,所以可以再字串或数值中自由加入分隔符号(例如:5,280或http://www.wikipedia.org)而不需要使用引号。
    另外还有两个特殊符号在YAML中被保留,有可能在未来的版本被使用--( @ )和( ` )。
  • 总结:

    • YAML的可读性好。
  • YAML和脚本语言的交互性好。
  • YAML使用实现语言的数据类型。
  • YAML有一个一致的信息模型。
  • YAML易于实现。
  • Python 首选
  • '-'+空白:输出格式为:列表
 - api_off              :  http://api.XXX.com    
 - m_off                :  http://m.XXX.com    
 - pc_off               :  http://www.XXX.com
  • 不带格式的输出格式为:字典
  url_off       : #The test environment    
        api_off              :  http://api.XXX.com    
        m_off                :  http://m.XXX.com    
        pc_off               :  http://www.XXX.com
  • 字典中包含列表:
men: [John Smith, Bill Jones]
women:
      - Mary Smith
      - Susan Williams
  • 列表包裹字典:
- {name: John Smith, age: 33}
- name: Mary Smith age: 27
  • 更多、更详细进阶教程

YAML -wikipedia

@晴-- 2016-09-28 17:10:45

你可能感兴趣的:(python_配置文件_YAML.yml)