
-
YAML文件
- 簡介:YAML結構(Structure)通過空格來展示。序列(Sequence)里的項用"-"來代表,Map里的鍵值對用":"分隔.
- 在YAML中,字串不一定要用雙引號標示。另外,在縮排中空白字符的數(shù)目并不是非常重要,只要相同階層的元素左側對齊就可以了(不過不能使用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中,字串不一定要用雙引號標示。另外,在縮排中空白字元的數(shù)目并不是非常重要,只要相同階層的元素左側對齊就可以了(不過不能使用TAB字元)。這個文件的的頂層由七個鍵值組成:其中一個鍵值"items",是個兩個元素構成的陣列(或稱清單),這清單中的兩個元素同時也是包含了四個鍵值的雜湊表。文件中重復的部分用這個方法處理:使用錨點(&)和參考(*****)標簽將"bill-to"雜湊表的內容復制到"ship-to"雜湊表。也可以在文件中加入選擇性的空行,以增加可讀性。在一個檔案中,可同時包含多個文件,并用"---"分隔。選擇性的符號"..."可以用來表示檔案結尾(在利用串流的通訊中,這非常有用,可以在不關閉串流的情況下,發(fā)送結束訊號)。
-
應用:
- 讀取
.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)。
- 注解由井字號( # )開始,可以出現(xiàn)在一行中的任何位置,而且范圍只有一行(也就是一般所謂的單行注解)
- 每個清單成員以單行表示,并用短杠+空白( **- ** )起始?;蚴褂?a href="" target="_blank">方括號( [ ] ),并用逗號+空白( **, ** )分開成員。
- 每個雜湊表的成員用冒號+空白(** : ** )分開鍵值和內容?;蚴褂么罄ㄌ枺?{ } ),并用逗號+空白( , ** )分開。雜湊表的鍵值可以用問號 ( ?** )起始,用來明確的表示多個詞匯組成的鍵值。
- 字串平常并不使用引號,但必要的時候可以用雙引號 ( " )或單引號 ( ' )框住。使用雙引號表示字串時,可用倒斜線( ** )開始的跳脫字元(這跟C語言類似)表示特殊字元。
- 區(qū)塊的字串用縮排和修飾詞(非必要)來和其他資料分隔,有新行保留(preserve)(使用符號 | )或新行折疊(flod)(使用符號 > )兩種方式。
- 在單一檔案中,可用連續(xù)三個連字號(---)區(qū)分多個檔案。另外,還有選擇性的連續(xù)三個點號( ... )用來表示檔案結尾。
- 重復的內容可使從參考標記星號 ( ***** )復制到錨點標記( & )。
- 指定格式可以使用兩個驚嘆號 (** !!** ),后面接上名稱。
- 檔案中的單一文件可以使用指導指令,使用方法是百分比符號(** %** )。有兩個指導指令在YAML1.1版中被定義: %YAML 指導指令,用來識別文件的YAML版本。
%TAG 指導指令,被用在URI的字首標記。這個方法在標記節(jié)點的型態(tài)時相當有用。 - YAML再使用逗號及冒號時,后面都必須接一個空白字元,所以可以再字串或數(shù)值中自由加入分隔符號(例如:5,280或http://www.wikipedia.org)而不需要使用引號。
另外還有兩個特殊符號在YAML中被保留,有可能在未來的版本被使用--( @ )和( ` )。 -
總結:
- YAML的可讀性好。
- YAML和腳本語言的交互性好。
- YAML使用實現(xiàn)語言的數(shù)據(jù)類型。
- YAML有一個一致的信息模型。
- YAML易于實現(xiàn)。
- 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