python_配置文件_YAML.yml

  • 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-8UTF-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
  • 更多、更詳細進階教程

YAML -wikipedia

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容