python_配置文件_YAML.yml

  • 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-8UTF-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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容