[Python]读写YAML文件
文章目录
- YAML格式
- YAML文件
- YAML操作
- 读取
- 存储
- 示例
- 转字典
- 转列表
YAML是一种数据序列化格式,方便人类阅读,且容易和脚本语言交互。常用于配置文件,也用于数据存储或传输。
YAML格式
YAML三种基本数据类型:
- 标量:如字符串、整数和浮点数、日期
- 布尔值:“true”、“True”、“TRUE”、“yes”、“Yes"和"YES”,“false”、“False”、“FALSE”、“no”、“No"和"NO”
- 空:null、Null、
~
或不指定值;
- 数组:使用前导符号
-
表示,且符号与值间要有空格; - 对象:键值对集合;用冒号+空格
:
分割;
YAML文件
文件基本规则:
- 区分大小写;
- 使用缩进表示层级关系:
- 缩进要用空格(非Tab);
- 相同层级元素要左对齐;
- 字符串不需要使用引号括起,但有特殊字符串(如空格、冒号等)时必须使用引号;
- 使用
#
注释;
一个文件中可包含多份YAML文档:
- 用
---
(即三个中划线)表示一份文档的开始; - [可选]用
...
(即三个小数点)表示一份文档的结束;
---
# 这是第一份文档
one: 1
# 其他内容...
...---
# 这是第二份文档
two: 2
# 其他内容...
YAML操作
Python中有两个YAML模块:PyYAML和ruamel.yaml(pip3 install pyyaml
,pip3 install ruamel.yaml
)。
读取
通过load函数可方便加载文档内容,返回的内容可能是字典、列表或空:
import yamldef readYaml(file): # -> Union[dict, list, None]:with open(file, 'r', encoding='utf-8') as f:return yaml.load(f, yaml.Loader)
若文件中有多个文档,需要使用load_all来加载;此时返回的是一个生成器,需要一次获取每个文档:
def readAllDoc(file) -> list:with open(file, 'r', encoding='utf-8') as f:docs = yaml.load_all(f, yaml.Loader)# return [d for d in docs]return list(docs)
存储
yaml.dump()方法不会将列表或字典数据进行转化yaml标准模式。需要通过ruamel.yaml来生成标准的yaml文档。
import ruamel.yamldef createYaml(file, data: dict):with open(file, 'w', encoding='utf-8') as f:writer = ruamel.yaml.YAML()writer.indent(mapping=2, sequence=4, offset=2)writer.dump(data, f)
通过dump_all可把数组中的每个元素序列化为一个文档:
def createAllDoc(file, data: list):with open(file, 'w', encoding='utf-8') as f:writer = ruamel.yaml.YAML()writer.indent(mapping=2, sequence=4, offset=2)writer.dump_all(data, f)
把[{'name': 'Mike', 'age': 12}, {'name': 'luce', 'age': 15}]
序列化。
dump会生成如下包含数组元素的yaml文件:
- name: Mikeage: 12- name: luceage: 15
dump_all会生成如下yaml文件(包含两个文档):
name: Mike
age: 12
---
name: luce
age: 15
示例
yaml读取后为列表或字典。
转字典
读取的内容为一个字典:
name: mike
age: 25
score: 80.5
返回的值为:
{"name": "mike","age": 25,"score": 80.5
}
获取里面值,先判断是否存在,再读取:
if 'name' in data:print(data['name'])
转列表
读取内容为一个列表:
- name: mikeage: 24
- name: tomage: 30
返回的值为:
[{"name": "mike","age": 24},{"name": "tom","age": 30}
]
[Python]读写YAML文件相关推荐
- Python读写yaml文件(使用PyYAML库)
一,YAML 简介 YAML,Yet Another Markup Language的简写,通常用来编写项目配置,也可用于数据存储,相比conf等配置文件要更简洁. 二,YAML 语法 支持的数据类型 ...
- python读写压缩文件使用gzip和bz2
python读写压缩文件使用gzip和bz2 #读取压缩文件 # gzip compression import gzip with gzip.open('somefile.gz', 'rt') as ...
- python 对 yaml 文件操作
python 对 yaml 文件操作 #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Introduce : p ...
- python读取csv文件的方法-python读写csv文件的方法
1.爬取豆瓣top250书籍 import requests import json import csv from bs4 import BeautifulSoup books = [] def b ...
- python处理excel教程实例-python 读写excel文件操作示例【附源码下载】
本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...
- csv 字符串_爬虫|python读写csv文件的方法完成生涯规划表
前面用PrettyTable制作了生涯规划表,今天突然想到其实可以用Python读写Excel文件,还可以制作Excel表格,相对而言,感觉csv的读写更简单,所以决定用csv改写生涯规划案例,以后教 ...
- Python读写docx文件(三十五)
Python读写docx文件 Python读写word文档有现成的库可以处理 pip install python-docx安装一下. https://python-docx.readthedocs. ...
- 三十一、Python读写docx文件
@Author:Runsen 文章目录 Python读写docx文件 Python读写docx文件 Python读写word文档有现成的库可以处理 pip install python-docx安装一 ...
- python生成yaml文件_Python实践34-读写yaml文件
关于yaml YAML语言的设计目标,就是方便人类读写.如果你想要实现一些用ini不好做到的配置,可以使用yaml格式作为配置文件 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使 ...
最新文章
- Debian/Ubuntu/Raspbian 时间同步
- Android镜像文件的拆解
- Java中的与、或、非以及异或( | ~ ^)运算符的运算原理
- 嵌入式开发概述(树莓派介绍)
- CDH5.16.2下载安装
- ALAsset 循环获取图片(Assets Library Framework)
- 如何将JavaScript日期转换为UTC?
- 字符串API中的split,substr,substring
- guid会重复么_饿了么请你考虑一下消费者
- VC++6.0安装番茄助手Visual Assist X和VC6LineNumberAddin的方法
- Java开发逻辑思维题
- PowerBI-筛选器函数-KEEPFILTERS
- mmdetection tools工具梳理
- android自定义控件
- APS车间排产软件实现企业生产数据可视化
- 日历控件修改的JS代码
- 台式计算机开机风扇不转,电脑开机显卡风扇不转是怎么回事|电脑开机风扇不转的解决方法...
- 数字功放和模拟功放有哪些区别
- 从eclipse官网下载32位eclipse并配置tomcat
- 天平游码读数例题_天平使用练习题
热门文章
- java 对json 格式做参数格式校验
- SAP FUNCTION ALV、SALV开发总结
- 微信小程序开发步骤+底部菜单栏制作
- Linux 命令(89)—— less 命令
- 关于select函数超时时间问题
- MultipartFile 支持什么类型_因为卡,白白换了六台电脑,原来重装系统如此简单!支持所有系统...
- 搭建TinyTiny rss服务
- 用Mac自带的启动转换助理(Boot Camp)安装Windows10企业版的方法 MacBook Air
- 【Tanh的标量实现】
- Eclipse中syso 快捷键 Alt + / 不能使用的问题