前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >YAML+PyYAML笔记 7 | PyYAML源码之yaml.compose_all(),yaml.load(),yaml.load_all()

YAML+PyYAML笔记 7 | PyYAML源码之yaml.compose_all(),yaml.load(),yaml.load_all()

原创
作者头像
虫无涯
发布2023-08-03 09:06:22
1910
发布2023-08-03 09:06:22
举报
文章被收录于专栏:全栈测试技术

1 yaml.compose_all()

  • 源码:
    在这里插入图片描述
    在这里插入图片描述
  • 作用:分析流中的所有YAML文档,并产生相应的表示树。
  • 解析:
代码语言:python
代码运行次数:0
复制
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/28 
# 文件名称:pyyaml_compose_all.py
# 作用:yaml.compose_all()
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import yaml

doc = """
---
user1:
  name: xiaoming
  age: 23
  password: 123456
---
user2:
  name: xiaozhang
  age: 24
  password: 123456
---
user3:
  name: xiaoli
  age: 25
  password: 123456
"""

trees = yaml.compose_all(doc)
for tree in trees:
    print(tree)
  • 输出:
代码语言:python
代码运行次数:0
复制
MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='user1'), MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='name'), ScalarNode(tag='tag:yaml.org,2002:str', value='xiaoming')), (ScalarNode(tag='tag:yaml.org,2002:str', value='age'), ScalarNode(tag='tag:yaml.org,2002:int', value='23')), (ScalarNode(tag='tag:yaml.org,2002:str', value='password'), ScalarNode(tag='tag:yaml.org,2002:int', value='123456'))]))])
MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='user2'), MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='name'), ScalarNode(tag='tag:yaml.org,2002:str', value='xiaozhang')), (ScalarNode(tag='tag:yaml.org,2002:str', value='age'), ScalarNode(tag='tag:yaml.org,2002:int', value='24')), (ScalarNode(tag='tag:yaml.org,2002:str', value='password'), ScalarNode(tag='tag:yaml.org,2002:int', value='123456'))]))])
MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='user3'), MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='name'), ScalarNode(tag='tag:yaml.org,2002:str', value='xiaoli')), (ScalarNode(tag='tag:yaml.org,2002:str', value='age'), ScalarNode(tag='tag:yaml.org,2002:int', value='25')), (ScalarNode(tag='tag:yaml.org,2002:str', value='password'), ScalarNode(tag='tag:yaml.org,2002:int', value='123456'))]))])

2 yaml.load()

  • 源码:
    在这里插入图片描述
    在这里插入图片描述
  • 作用:解析流中的第一个YAML文档,并生成相应的Python对象;
  • 解析:
代码语言:python
代码运行次数:0
复制
# config_pyyaml.yaml如下:
代码语言:python
代码运行次数:0
复制
user1:
  name: xiaoming
  age: 23
  password: 123456
user2:
  name: xiaozhang
  age: 24
  password: 123456
user3:
  name: xiaoli
  age: 25
  password: 123456
代码语言:python
代码运行次数:0
复制
# pyyaml_load.py如下:
代码语言:python
代码运行次数:0
复制
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/28 
# 文件名称:pyyaml_load.py
# 作用:yaml.load()
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import yaml

with open('config_pyyaml.yaml', 'r') as f:
    data = yaml.load(f, Loader=yaml.FullLoader)

print(data)
  • 输出:
代码语言:python
代码运行次数:0
复制
{'user1': {'name': 'xiaoming', 'age': 23, 'password': 123456}, 'user2': {'name': 'xiaozhang', 'age': 24, 'password': 123456}, 'user3': {'name': 'xiaoli', 'age': 25, 'password': 123456}}

3 yaml.load_all()

  • 源码:
    在这里插入图片描述
    在这里插入图片描述
  • 作用:解析流中的所有YAML文档并生成相应的Python对象;
  • 解析:
代码语言:python
代码运行次数:0
复制
# config_pyyaml01.yaml如下:
代码语言:python
代码运行次数:0
复制
---
user1:
  name: xiaoming
  age: 23
  password: 123456
---
user2:
  name: xiaozhang
  age: 24
  password: 123456
---
user3:
  name: xiaoli
  age: 25
  password: 123456
代码语言:python
代码运行次数:0
复制
# pyyaml_load_all.py如下:
代码语言:python
代码运行次数:0
复制
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/28 
# 文件名称:pyyaml_load_all.py
# 作用:yaml.load_all()
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import yaml

f = open('config_pyyaml01.yaml', 'r')
docs = yaml.load_all(f, Loader=yaml.FullLoader)
for doc in docs:
    print(doc)
f.close()
  • 输出:
代码语言:python
代码运行次数:0
复制
{'user1': {'name': 'xiaoming', 'age': 23, 'password': 123456}}
{'user2': {'name': 'xiaozhang', 'age': 24, 'password': 123456}}
{'user3': {'name': 'xiaoli', 'age': 25, 'password': 123456}}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 yaml.compose_all()
  • 2 yaml.load()
  • 3 yaml.load_all()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档