現(xiàn)在越來越多的開源軟件在配置文件中都使用了YAML格式,這種格式文件去除了引號以及各種括號,看起來語法更加精煉。究其原因,YAML格式用更少的語法來表達豐富的含義。
YAML是一個可讀性更高(和XML、JSON格式相比),用來表達數(shù)據(jù)序列化的格式。YAML的意思是”Yet Another Markup Language”(YAML仍是一種標記語言)。
我們通過一段人員簡歷示例來了解下YAML格式
#YAML格式
name:張三
age:22
sex:男
interest:
興趣1:爬山
興趣2:音樂
skill:
- 語言:JAVA
時間:2年
- 語言:Python
時間:2年
exam:
- subject:英語4級
score:50
- subject:高級程序員
score:50
YAML基本格式要求:
YAML大小寫敏感
使用縮進代表層次關系
縮進只能使用空格,空格不要求個數(shù),只需要相同層級對齊(一般建議2個或4個空格),并且不允許使用Tab。
對象:
格式為key:value。冒號后面要加一個空格。
如示例中的 name: 張三
還可以使用縮進表示層級關系,如
interest:
興趣1:爬山
興趣2:音樂
YAML中還支持流式(flow)語法表示對象,比如上面代碼可以寫為:
interest:{興趣1:爬山,興趣2:音樂}
數(shù)組項:
使用一個短橫線加一個空格代表一個數(shù)組項,如
skill:
- 語言:JAVA
時間:2年
- 語言:Python
時間:2年
1.使用ruamel.yaml模塊
Pip install ruamel.yaml
2.YAML文件的讀取和寫入
YAML文件的讀取
通過代碼演示yaml文件的讀取
from ruamel.yaml import YAML
yaml=YAML(typ='safe')
with open(r'g:bookcode1010.1.yml',encoding="utf-8") as file:
data=yaml.load(file)
print(data)
輸出結果如下:
{'name': '張三', 'age': 22, 'sex': '男', 'interest': {'興趣1': '爬山', '興趣2': '音樂'}, 'skill': [{'語言': 'JAVA', '時間': '2年'}, {'語言': 'Python', '時間': '2年'}], 'exam': [{'subject': '英語4級', 'score': 50}, {'subject': '高級程序員', 'score': 50}]}
YAML文件的寫入
通過代碼演示將字典或者列表寫入YAML文件。
from ruamel.yaml import YAML
yaml=YAML()
data={'name': '李四', 'age': 22, 'sex': '男',
'interest': {'興趣1': '爬山', '興趣2': '音樂'},
'skill': [{'語言': 'Python', '時間': '2年'}],
'exam': [{'subject': '高級程序員', 'score': 50}]
}
with open(r'g:bookcode1010.2.yaml',mode='w',encoding="utf-8") as file:
yaml.dump(data,file)
結果如下:
YAML格式,個人感覺比JSON明顯要清晰一些。大家可以親自寫一遍代碼,加深記憶加油。