python+YAML格式文件,是不是该放弃其它格式了

现在越来越多的开源软件在配置文件中都使用了YAML格式 , 这种格式文件去除了引号以及各种括号 , 看起来语法更加精炼 。究其原因 , YAML格式用更少的语法来表达丰富的含义 。
YAML是一个可读性更高(和XML、JSON格式相比) , 用来表达数据序列化的格式 。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大小写敏感
使用缩进代表层次关系
缩进只能使用空格 , 空格不要求个数 , 只需要相同层级对齐(一般建议2个或4个空格) , 并且不允许使用Tab 。
对象:
格式为key:value 。冒号后面要加一个空格 。
如示例中的 name: 张三
还可以使用缩进表示层级关系 , 如
interest:
兴趣1:爬山
兴趣2:音乐
YAML中还支持流式(flow)语法表示对象 , 比如上面代码可以写为:
interest:{兴趣1:爬山,兴趣2:音乐}
数组项:
使用一个短横线加一个空格代表一个数组项 , 如
skill:
- 语言:JAVA
时间:2年
- 语言:Python
时间:2年
 
python+YAML格式文件,是不是该放弃其它格式了

文章插图
 
 
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=https://www.isolves.com/it/cxkf/yy/Python/2020-05-09/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=https://www.isolves.com/it/cxkf/yy/Python/2020-05-09/{'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)
结果如下:
python+YAML格式文件,是不是该放弃其它格式了

文章插图
 
YAML格式 , 个人感觉比JSON明显要清晰一些 。大家可以亲自写一遍代码 , 加深记忆加油 。

【python+YAML格式文件,是不是该放弃其它格式了】


    推荐阅读