一、yaml文件在Python中的使用场景:
作为配置文件使用:软件开发过程中,配置文件是经常打交道的东西。对于一些复杂的程序来说,需要使用配置文件来配置一些参数。比如说,测试环境、预生产环境和生产环境的地址,mysql的地址,帐号,密码等信息。因为部署的环境不同,所对的应内容就不同,在这种情况下就需要根据不同的部署环境配置不同的参数。
二、yaml是什么:
-
YAML (YAML Another Markup Language)是一种标记语言;
-
文件扩展名一般是.yml或者.yaml;
-
一种专门用来写配置文件的语言。可用于如: Java,C/C++, Ruby, Python, Perl, C#, PHP等。
三、yaml的优点:
-
YAML易于人们阅读。
-
YAML数据在编程语言之间是可移植的。
-
YAML匹配敏捷语言的本机数据结构。
-
YAML具有一致的模型来支持通用工具。
-
YAML支持单程处理。
-
YAML具有表现力和可扩展性。
-
YAML易于实现和使用。
四、yaml文件的语法:
-
大小写敏感;
-
使用缩进表示层级,缩进不允许tab,只允许空格;
-
不允许使用制表符\t,只允许使用空格;
-
缩进的空格数量不作要求,可以1个,也可以多个;
-
相同层级的元素应保持相同的缩进;
-
注释标识为#,标识注释当前行;
-
yaml是第三方库,需要安装后使用 pip install pyyam;
安装成功后:
五、常用的数据格式:
1、yaml中的字符串: 可以用单引号,双引号,也可以不用引号;
-
单引号/不加引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据;
例:
'Hello\nworld'
Hello\nworld
程序代码如下:
import yaml
with open('yaml文件路径.yaml') as file1:
text = yaml.load(file1,Loader=yaml.FullLoader)
print(text)
读取结果:
-
双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
例:
"Hello\nworld"
同样使用上述代码,输出结果为:
2、yaml中的列表
1)可以用减号加空格加元素表示列表
2)可以用缩进表示子列表
例:
- 100
- 200
-
- 30
同样使用上述代码,输出结果为:
3、yaml中的字典
1)字典以key:value的形式表示
2)可以用缩进表示子字典
例:
A:
name1:Tiffany
B:book
读取结果:
4、yaml中的变量
1)yaml允许定义和使用变量
2)定义变量 &变量名 变量值
-
使用变量 *变量名
HOST: &HOST 121.41.14.39
url: *HOST
同样使用以上代码,读取结果:
5、yaml中存放多个元素
-
yaml允许存放多个不同类型的元素
-
不同元素之间用---隔开
例:
-10
-20
---
name:张三
age:21
代码如下:
import yaml
with open('yaml文件路径.yaml',encoding='utf-8') as file2:
text = yaml.load_all(file2,Loader=yaml.FullLoader)
for one in text:
print(one)
读取结果:
六、yaml文件的写入:
import yaml
text={'host':'127.0.0.1','user':'root','pwd':'123456'}
with open('./1.yaml','a+',encoding='utf-8') as file2:
yaml.dump(text,file2,allow_unicode=True)
file2.close()
text:写入的数据;
allow_unicode=True 如果添加的数据包含中文,避免写入的数据出现乱码;
七、常见问题:
1、yaml文件中包含单一变量,可使用yaml.load()读取yaml文件;
2、如果yaml文件中包含多个不同类型的元素,可使用yaml.load_all()来解析全部文档;
3、Loader=yaml.FullLoader不提示安全警告;
4、yaml文件中的字典格式:以键值对形式,冒号后面加空格;
5、yaml文件中的列表格式,数组前面加’-‘,