初識yaml語言之yaml讀寫操作
阿新 • • 發佈:2020-09-19
簡介
在開發的這種語言時,YAML 的意思其實是:"Yet Another Markup Language"(仍是一種標記語言)。
最後開發者又改變了原來的想法,改為:
YAML 是 "YAML Ain't a Markup Language"(YAML 不是一種標記語言)。
上面這些不重要,我們只需要知道YAML 是專門用來寫配置檔案的語言,非常簡潔和強大,遠比 JSON 格式方便就行。
注意格式:
'#'表示註釋
大小寫敏感
使用縮排表示層級關係
縮排不允許使用tab,只允許空格。縮排的空格數不重要,只要相同層級的元素左對齊即可
支援的資料型別
物件:鍵值對的集合,又稱為對映/ 雜湊 / 字典
陣列:一組按次序排列的值,又稱為序列 / 列表
純量:單個的、不可再分的值
yaml物件
物件鍵值對使用冒號結構表示key: value,冒號後面要加一個空格,固定寫法。
也可以使用key:{key1: value1, key2: value2, ...}。 還可以使用縮排表示層級關係,注意不要使用tab,冒號後面有空格。
其他型別暫時沒有用到,我就沒有去了解
PyYaml是python的一個專門對yaml檔案操作模組,使用起來比較簡單
安裝方法
pip install PyYaml
既然是配置檔案,那肯定要讀取或者寫入了,如何操作呢,繼續看。。
新建一個.yml的檔案
然後將上面圖一的格式內容複製到yml中
對這個配置檔案進行讀取和寫入操作
程式碼如下:
import pprint import yaml #讀yaml with open('conf.yml', 'r', encoding='utf-8') as fs: data = yaml.safe_load(fs) #解析yaml檔案內容並生成python物件 pprint.pprint(data) #列印 #寫yaml data_w={'psw': {'new': 'abcdefg', 'old': 'abcdefgwj'}} with open('conf.yml','w') as fs: #寫入模式 data2=yaml.safe_dump(data_w,fs) #將python物件轉化為yaml流 #重新再讀取yaml檔案 with open('conf.yml','r') as fs: # 也是解析yaml文件,但是有一個Loader引數,預設為空。Loader=yaml.FullLoader解決告警問題 data3=yaml.load(fs,Loader=yaml.FullLoader) pprint.pprint(data3)
列印結果如下: