python生成yaml文件_Python实践34-读写yaml文件
关于yaml
YAML语言的设计目标,就是方便人类读写。如果你想要实现一些用ini不好做到的配置,可以使用yaml格式作为配置文件
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
yaml数据结构
YAML 支持的数据结构有三种。
对象
键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
对象的一组键值对,使用冒号结构表示。
数组
一组按次序排列的值,又称为序列(sequence) / 列表(list)
一组连词线开头的行,构成一个数组。
纯量(scalars)
单个的、不可再分的值
包括字符串,布尔值,整数,浮点数,Null,时间,日期
一个yaml文件
name: John Smith
age: 37
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age: 12
和它对应的json文件如下:
{ name: 'John Smith',
age: 37,
spouse: { name: 'Jane Smith', age: 25 },
children:
[ { name: 'Jimmy Smith', age: 15 },
{ name: 'Jenny Smith', age: 12 } ]
}
读写yaml文件
import yaml
if __name__ == "__main__":
with open('father.yml') as f:
content = yaml.load(f)
# output:
print(type(content))
print(content)
content.update({'age': 38})
print(content)
with open('PyYAML.yml', 'w') as nf:
yaml.dump(content, nf)
生成的新yaml文件形式如下:
age: 38
children:
- {age: 15, name: Jimmy Smith}
- {age: 12, name: Jenny Smith}
name: John Smith
spouse: {age: 25, name: Jane Smith}
仔细一看,跟原yaml文件不像嘛,尤其是几个大括号,很刺眼,这可怎么办?
使用ruamel.yaml代替PyYAML
解决方法就是使用ruamel.yaml代替PyYAML,因为PyYAML貌似已经不再维护了
安装:pip install ruamel.yaml
使用ruamel.yaml库里面函数参数Loader=ruamel.yaml.RoundTripLoader和Dumper=ruamel.yaml.RoundTripDumper可以用来保持新生成的yaml文件的表现和输入文件一致。代码如下:
from ruamel import yaml
if __name__ == "__main__":
with open('father.yml') as f:
content = yaml.load(f, Loader=yaml.RoundTripLoader)
# output:
print(type(content))
print(content)
content.update({'age': 38})
print(content)
with open('ruamel.yml', 'w') as nf:
yaml.dump(content, nf, Dumper=yaml.RoundTripDumper)
生成新的yaml文件形式如下,正是我们期望的格式:
name: John Smith
age: 38
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age: 12
代码下载
本文代码已经归档到github,您可以访问下面的链接获得,欢迎star该代码仓库。
代码地址
python生成yaml文件_Python实践34-读写yaml文件相关推荐
- python生成whl包_python之PypI打包whl文件
一.简单介绍 python中我们经常会用到第三方的包作为工具,比如爬虫解析工具,网络请求工具等.之所以要把它封装成包,意识为了技术与业务分离,二是为了能多 项目多平台共用.python里面用到的第三方 ...
- Python编程从入门到实践 第十章:文件和异常 练习答案记录
Python编程从入门到实践 第十章:文件和异常 练习答案记录 练习题导航 Python编程从入门到实践 第十章:文件和异常 练习答案记录 10.1 从文件中读取数据 10.1.1 读取整个文件 10 ...
- python生成word目录_Python 文件与目录操作方法总结
Python 有很多内置的模块和函数可用于文件的操作处理,这些函数都分布在几个模块上:如 os,os.path,shutil 和pathlib 等等.本文收集了许多您需要知道的函数,以便在 Pytho ...
- python读取docx的内容输出_Python应用 , 读写docx文件!
字处理软件是平时办公必备的同时也是最常用的软件之一,而字处理软件用的最多最频繁的就是微软的word,其扩展名为docx.在日常工作中,可能需要对很多的docx文件进行批处理,例如教师在批阅学生提交的电 ...
- android读取本地yaml文件_python笔记11-读取yaml配置文件(pyyaml)
YAML简介 YAML 是一种较为人性化的数据序列化语言,可以配合目前大多数编程语言使用. YAML 的语法比较简洁直观,特点是使用空格来表达层次结构,其最大优势在于数据结构方面的表达,所以 YAML ...
- python生成html报表_python生成HTMl报告(unittest)
放在*\python3\script 或者放在当前项目文件夹下 亦或者在python35下的lib文件夹下 (注意最好放在根目录下) from HTMLTestRunner import HTMLTe ...
- python导入mat文件_python读取并写入mat文件的方法
先给大家介绍下python读取并写入mat文件的方法 用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); sav ...
- python生成字符画_Python生成字符画 | 文艺数学君
摘要这一篇文章介绍使用Python生成字符画的方式. 会给出简单的原理介绍和实现的方式. 最后会给出源代码的链接地址. 简介 这一篇介绍一下使用Python来进行字符画的生成. 这里会介绍一下生成的步 ...
- python保存数据到本地文件_python保存数据到本地文件的方法
python保存数据到本地文件的方法 1.保存列表为.txt文件 #1/list写入txt ipTable = ['158.59.194.213', '18.9.14.13', '58.59.14.2 ...
最新文章
- socket编程报异常java.io.EOFException
- MyEclipse6.0下代码提示(alt+/)无法使用的解决方法
- Allegro跨分割检查
- (6)nginx:rewrite
- python每个字符后添加空格_python实现指定字符串补全空格的方法
- sparseTM的公式理解
- 一文读懂Http Headers为何物(超详细)
- hihocoder#1513 : 小Hi的烦恼
- C++ Primer Plus 第二章编程练习
- Algs4-2.1.8元素有三种值时插入排序的复杂度
- Es6语法实现的转盘抽奖效果——可配置转盘的抽奖概率
- 大规模机器学习:将数据科学引入生产系统架构的典型模式
- Kafka配置JAAS
- Max(TM)仓库管理系统v2.0.5.1网络版
- 安平仓管王 5000xp v2.9 免费下载
- 安卓屏幕朗读app_安卓车机后装苹果CarPlay盒子的自动化分享
- QThread 的使用
- 【纯java语言做RPG游戏】4.用XML导入NPC并与NPC对话
- 华尔街日报:雅虎站在移动互联网时代悬崖边
- mini计算机结构,简单拆机看内部构造_苹果 Mac mini MGEN2CH/A_台式电脑评测-中关村在线...
热门文章
- c语言里 如何取得线程的lpparameter'参数,请问线程函数如何访问对话框类中的变量...
- 【RK3399Pro学习笔记】十三、ROS中的坐标系管理系统
- 小程序 获取当前用户地址及地图显示
- 如何解决Mybatis里mapper文件中关于不能用大于小于号
- 输出一个等边三角形(由*拼接),实心或空心,连长为n
- [Windowns C]递归遍历指定目录下的子目录和文件
- [Oracle]使用滚动游标
- js上传文件;input上传文件;
- 什么是跨域?跨域如何解决
- React开发(155):请求方式得问题