导语:今天学习下yaml文件的处理!
YAML(YAML Ain’t Markup Language)是一种简洁而强大的数据序列化格式,它常用于编写配置文件。
YAML安装
pip inastll pyyaml
YAML基础语法
字符串的表示
在YAML中,你可以用单引号、双引号或不加引号来表示字符串。这取决于你是否需要在字符串中使用特殊字符。
# YAML文件示例
name1: cuicui
name2: '崔崔'
name3: "xiaocui"
字典和列表
YAML中的字典以key: value
的形式表示,而列表则是用减号加空格-
来表示每个元素。子元素使用缩进表示层级关系。
# 字典和列表的YAML表示
person:
name: cuicui
age: 18
fruits:
- apple
- banana
- orange
注意事项
- 在YAML中,冒号后面一定要加空格,否则会报错。
- YAML对大小写敏感,
Name
和name
会被视为不同的键。 - 只允许使用空格进行缩进,不支持制表符
\t
。
Python读取YAML文件
让我们通过一些简单的Python代码来读取YAML文件。
读取基本数据结构
# YAML文件-test03.yaml示例
name1: cuicui
name2: '崔崔'
name3: "xiaocui"
name4: cui\nCui
name5: '崔\n崔'
name6: "xiao\ncui"
information:
age: 18
hobby: '吃'
import yaml
# 打开并读取YAML文件
with open('test03.yaml', 'r') as f:
data = yaml.safe_load(f)
print(data) # 打印整个数据结构
print(data['name4']) # 打印特定的键值
读取列表
# YAML文件-test04.yaml示例
- 10
- 11
- 102
代码如下:
import yaml
# 读取列表数据
with open('test04.yaml', 'r') as f:
data = yaml.safe_load(f)
print(data) # 列表数据会被打印出来
读取文档中不同元素
YAML文件可以包含多个元素,使用---
来分隔。
# YAML文件-test05.yaml示例
name6: "xiao\ncui"
information:
age: 18
hobby: '吃'
---
- 10
- 11
- 102
代码示例如下:
import yaml
# yaml文件中存在多个不同类型的元素时,不同元素使用--- 隔开
# 这里面使用safe_load_all() 方法,但是打印出来的是生成器(可迭代的对象)例如:<generator object load_all at 0x7fa334b0b430>
# 使用for循环进行迭代
with open('test05.yaml') as f:
text = yaml.safe_load_all(f)
for t in text:
print(t)
print(type(t))
YAML文件中的特殊规则
大小写敏感示例
# 大小写敏感示例
upper_case: Value
lower_case: value
使用缩进表示层级关系
# 层级关系示例
root:
child:
grandchild: value
变量处理
有时,YAML文件中会包含变量,我们可以使用环境变量或其他方法来替换这些变量。
# 假设YAML文件包含变量
# YAML文件-test06.yaml示例
url: &var https://blog.csdn.net
baseurl: *var
username: admin
password:
- admin
- 8982
- *var
代码示例如下:
import yaml
with open('test06.yaml') as f:
text = yaml.safe_load_all(f)
for i in text:
print(i)
总结
下次见,拜拜~