python中的yaml文件
yaml是"Yet Another Markup Language"(仍是一种标记语言)
yaml的文件后缀支持yaml和yml
yaml的规则:
1.大小写敏感
2.使用缩进表示层级关系
3.缩进时不允许使用tab键,只能使用空格键
4.yaml支持不同的数据类型(整型。字符串,字典,列表,布尔型,None)
5.yaml格式使用key: value的形式,且在key的冒号后面使用一个空格,将key和value区分
6.使用#进行注释
7.一般yaml文件中会自动识别数据类型
8.读取yaml文件输出的数据一般是字典类型
9.使用”进行转义,单引号的特殊字符转到python中会被转义,原样输出,双引号中的不会被转义,最后还是输出了特殊字符
如下图说明:
读取不同格式的yaml文件
一、读取普通的key-value形式的yaml文件
#test.yaml
host: 'http://www.baidu.com'
port: 8080
import yaml
with open('test.yaml', encoding='utf-8') as rstream:
data = yaml.load(rstream, yaml.SafeLoader)
print(data)
print(data['host']) # http://www.baidu.com
print(data['port']) # 8080
运行结果:
{'host': 'http://www.baidu.com', 'port': 8080}
从以上结果来看,输出的就是一个字典
二、读取列表形式的yaml文件
#test.yaml
- fenfei
- beijing
- china
- 18
import yaml
with open('test.yaml', encoding='utf-8') as rstream:
data = yaml.load(rstream, yaml.SafeLoader)
print(data)
运行结果:
['fenfei', 'beijing', 'china', 18]
总结:从以上运行结果来看,当yaml存储列表数据时,需要用横杠-表示,一个-表示为一个列表元素,输出结果为-代表一个列表元素
三、读取字典嵌套列表的yaml文件
#test.yaml
host: 11.112.112.11
port: 8080
db:
host: 110.112.113.113
port: 3306
info:
-
username: jiajia
password: 123456
-
username: haha
password: 123456
python代码:
import yaml
with open('test.yaml', encoding='utf-8') as rstream:
data = yaml.load(rstream, yaml.SafeLoader)
print(data)
运行结果:
{'host': '11.112.112.11', 'port': 8080, 'db': {'host': '110.112.113.113', 'port': 3306}, 'info': [{'username': 'jiajia', 'password': 123456}, {'username': 'haha', 'password': 123456}]}
总结:存储字典时,以key-value的形式存储,读取出来的话也是以字典的形式输出;存储列表时,以-表示;读取一组数据,使用load(stram,loader),总体来说,yaml文件中列表是嵌套在字典里面的
python中的ini文件
ini是传统的主流配置文件,ini支持的数类型比较少,把所有的值都当做字符串处理
在ini文件中,所有的字符处理不需要加双引号,在ini中,key-value使用=
Ini文件有节,键值、注释组成
[section]
Key=value
使用;进行注释
读取ini文件时需要导入configparser模块中的ConfigParser类
;test.ini
[default]
host=http://www.baidu.com
port=7890
[db]
host=172.14.11.10
port=3306
from configparser import ConfigParser
paraser=ConfigParser()
paraser.read('test.ini',encoding='utf-8')
#获取某个配置:
host=paraser.get('default','host')
print(host)
运行结果:
http://www.baidu.com
总结:
yaml支持的数据类型比较多,推荐使用yaml格式的配置文件