38.python之yaml文件的读取和写入

第三方包pyyaml

安装:

pip install pyyaml

具体yaml的基本语法和文件读取在前面都已经介绍了,这里就不再写了

一组数据读写

  • 读取一组数据:yaml.load()
  • 写一组数据:yaml.dump()

例:

import yaml
import os

current_path = os.getcwd()
path = os.path.join(current_path, 'b.yaml')

aproject = {'name': 'Silenthand Olleander',
            'race': '哈哈哈黑',
            'traits': ['ONE_HAND', 'ONE_EYE']
            }

# 写
with open(path, 'w', encoding='utf-8')as f1:
    # 字符串写入yaml中
    yaml.dump(aproject, f1, default_flow_style=False, encoding='utf-8', allow_unicode=True)

# 读
with open(path, 'r', encoding='utf-8')as f2:
    # 读取,此时读取出来的是字符串
    data = f2.read()
    # 将读取的内容转化成字典
    # 添加Loader=yaml.FullLoader,不然会有warning
    result = yaml.load(data, Loader=yaml.FullLoader)
    print(result)

结果:
在这里插入图片描述
在这里插入图片描述

多组数据读写

  • 读取多组数据:yaml.load_all()
    返回结果为一个生成器,需要使用for循环语句获取每组数据
  • 写多组数据:yaml.dump_all()

例:

import yaml
import os

current_path = os.getcwd()
path = os.path.join(current_path, 'b.yaml')

user1 = {
    'name': '张三',
    'age': 18,
    'like': {'kecheng': '语文','yundong': '跑步'}
}

user2 = {
    'name': '李四',
    'age': 17,
    'like': {'kecheng': '数学','yundong': '跳高'}
}

# 写
with open(path, 'w', encoding='utf-8')as f1:
    # 字符串写入yaml中
    yaml.dump_all([user1, user2], f1, default_flow_style=False, encoding='utf-8', allow_unicode=True)

# 读
with open(path, 'r', encoding='utf-8')as f2:
    data = f2.read()
    # 添加Loader=yaml.FullLoader,不然会有warning
    result = yaml.load_all(data, Loader=yaml.FullLoader)
    for i in result:
        print(i)

结果:
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值