一. Yamlpython
YAML 是一種簡潔的非標記語言。YAML以數據爲中心,使用空白,縮進,分行組織數據,從而使得表示更加簡潔易讀。web
因爲實現簡單,解析成本很低,YAML特別適合在腳本語言中使用。列一下現有的語言實現:Ruby,Java,Perl,Python,PHP,JavaScript等。數組
YAML 是專門用來寫配置文件的語言,很是簡潔和強大,遠比 JSON 格式方便。好比同一段數據Josn和Yaml的表示分別以下:數據結構
Json
{ name: 'Tom Smith',age: 37,spouse: { name: 'Jane Smith', age: 25 },children: [ { name: 'Jimmy Smith', age: 15 },{ name: 'Jenny Smith', age: 12 } ] }
yaml name: Tom Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - name: Jenny Smith age: 12
清晰明瞭程度一會兒就看出來了吧。app
pip install yaml
數據最小的單位,不能夠再分割。相似於Python中單個變量ide
flag
與Python的list數組結構相似,數組元素使用「-」開頭,也能夠根據縮進進行數組嵌套。url
- Jack - Harry - Sunny # 也能夠寫成一行 [Jack,Harry,Sunny]
對應到python的list寫法以下:spa
['Jack','Harry','Sunny']
對象的一組鍵值對,使用冒號結構表示。相似Python中的字典數據結構。scala
platformName: Android platformVersion: 6.0.1 # Yaml 也容許另外一種寫法,將全部鍵值對寫成一個行內對象。 {platformName: Android,platformVersion: 6.0.1} 注意:冒號後面必定要有空格!對應到python字典的寫法以下: {'platformName': 'Android', 'platformVersion': '6.0.1'}
yaml數據嵌套表示能夠將上面的各種數據根據實際場景進行組合嵌套。3d
Tom Smith 37歲,他有一個妻子叫 Jane Smith,25歲。 另外他有2個孩子,一個叫Jimmy Smith,15歲;另一個叫Jenny Smith ,12歲。
yaml語法表示以下:
name: Tom Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - name: Jenny Smith age: 12
轉化爲Python的寫法爲:
{'name':'Tom Smith','age':37,'spouse':{'name':'Jane Smith','age':25},'childern':[{'name':'Jimmy Smith','age':15},{'name':'Jenny Smith','age':12}]}
load(stream, Loader=Loader) 解析文件流中的第一個YAML文檔並生成相應的Python對象。
# 讀取familyinfo.yaml文件的數據 import yaml file = open('familyinfo.yaml', 'r') data = yaml.load(file) # 打印全量data數據 print(data) # 獲取配偶信息 print(data['spouse']) # 分別獲取配偶的姓名和年齡 print(data['spouse']['name']) print(data['spouse']['age']) # 獲取全部孩子的信息 print(data['children']) # 分別獲取每一個孩子的信息 print(data['children'][0]) print(data['children'][0]['name']) print(data['children'][0]['age']) print(data['children'][1]) print(data['children'][1]['name']) print(data['children'][1]['age']) # 修改Tom Smith的名字,可是不寫入yaml文件 data['name'] = 'Ma Mingchen' print(data['name']) # 修改第一個孩子的名字 data['children'][0]['name']='Ma Yuhe' print(data['children'][0]['name'])
方法:dump()能夠將Python對象序列化成YAML流。若是stream爲None,則返回生成的字符串。
將下面python數據類型轉化爲yaml數據類型
slogan=['welcome','to','BeiJing'] website={'url':'www.baidu.com'}
import yaml # 將下面python數據類型轉化爲yaml數據類型 slogan=['welcome','to','BeiJing'] website={'url':'www.baidu.com'} print(slogan) print(website) # 將python數據類型轉換爲yaml流 print(yaml.dump(slogan)) print(yaml.dump(website))