一分钟了解python中如何使用yaml

本文介绍了如何在Python中安装并使用PyYAML库,包括yaml的语法、文件读取(如`yaml.safe_load`和`yaml.safe_load_all`)、数据保存(`.yaml`文件格式),以及如何通过`easydict`简化字典访问。
摘要由CSDN通过智能技术生成

1.安装

在终端中输入如下命令

pip install pyyaml

2.格式

yaml的语法一般为key: value的形式,冒号后有且仅有一个空格,对大小写敏感,字符串不必使用引号。
例如:

name: Tom
age: 8

当一个key有多个属性时,可以写成如下形式,缩进一般为两个空格,且不能使用TAB

score:
  math: 98
  english: 94
  chinese: 99

3.读取

假设有一个yaml文件,里面的内容如下:

name: Tom
age: 8
score:
  math: 98
  english: 94
  chinese: 99

一般我们会使用yaml.safe_load()

import yaml

filepath = 'config.yaml'

with open(filepath) as f:
    cfg = yaml.safe_load(f)

print(cfg)

最终数据会以字典的形式存入变量中,打印的结果如下所示:

{'name': 'Tom', 'age': 8, 'score': {'math': 98, 'english': 94, 'chinese': 99}}

如果我们希望将yaml文件中的数据存放在python的两个变量中,则可以使用---将数据分割开:

age: 8
name: Tom
score:
  chinese: 99
  english: 94
  math: 98
---
age: 8
name: Jerry
score:
  chinese: 97
  english: 78
  math: 87

使用yaml.safe_load_all()进行读取:

import yaml

filepath = 'data.yaml'
    
with open('data.yaml', 'r') as f:
    cfg = yaml.safe_load_all(f)
    for data in cfg:
        print(data)

输出结果如下:

{'age': 8, 'name': 'Tom', 'score': {'chinese': 99, 'english': 94, 'math': 98}}
{'age': 8, 'name': 'Jerry', 'score': {'chinese': 97, 'english': 78, 'math': 87}}

4.保存

yaml文件的格式后缀.yaml.yml都可以,这里我们使用.yaml

import yaml

cfg = {
    'name': 'Tom',
    'age': 8,
    'score': {'math': 98, 'english': 94, 'chinese': 99}
}

with open('data.yaml', 'w', encoding='utf-8') as f:
    yaml.safe_dump(cfg, f)

最终会生成一个data.yaml文件,内容如下:

age: 8
name: Tom
score:
  chinese: 99
  english: 94
  math: 98

还有一个yaml.safe_dump_add()命令,它可以将多个数据保存到一个yaml文件中,如下:

import yaml

cfg1 = {
    'name': 'Tom',
    'age': 8,
    'score': {'math': 98, 'english': 94, 'chinese': 99}
}

cfg2 = {
    'name': 'Jerry',
    'age': 8,
    'score': {'math': 87, 'english': 78, 'chinese': 97}
}
    
with open('data.yaml', 'w', encoding='utf-8') as f:
    yaml.safe_dump_all([cfg1, cfg2], f)

最终保存文件的内容如下:

age: 8
name: Tom
score:
  chinese: 99
  english: 94
  math: 98
---
age: 8
name: Jerry
score:
  chinese: 97
  english: 78
  math: 87

5.优雅的使用字典

字典调用里面的变量比较麻烦data['name'],如果我们像简便一点data.name,则需要使用到包easydict,安装如下:

pip install easydict

假设我们有一个yaml文件data.yaml,内容如下:

age: 8
name: Tom
score:
  chinese: 99
  english: 94
  math: 98

则读取代码可以写为:

import yaml
from easydict import EasyDict as edict

filepath = 'data.yaml'
    
with open('data.yaml', 'r') as f:
    cfg = yaml.safe_load(f)
    data = edict(cfg)

print(data.name)
print(data.score)

输出如下:

Tom
{'chinese': 99, 'english': 94, 'math': 98}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值