python yaml配置文件_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-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

更多、更详细进阶教程

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值