Python-PyYAML
安装:
pip install pyyaml
使用详解:
YAML 5.1之后的读取方法:
因为在5.1之后,直接用load()已经过时了,需要在方法里面加一个 loader 的请求参数,如下:
def read_yaml(self, path):withopen(path, encoding="utf-8") as f:result = f.read()result = yaml.load(result, Loader=yaml.FullLoader) #loader可选择BaseLoader、SafeLoader、FullLoader、UnsafeLoaderreturnresult
也可以,根据Python语法转换,如下:
def read_yaml(self, path):withopen(path, encoding="utf-8") as f:result = f.read()result = yaml.full_load(result)return result
针对不同的需要,加载器有如下几种类型:
BaseLoader: 仅加载最基本的YAML
SafeLoader: 安全地加载YAML语言的子集。建议用于加载不受信任的输入(safe_load)
FullLoader: 加载完整的YAML语言。避免任意代码执行。这是当前(PyYAML 5.1)默认 加载器调用 yaml.load(input) (发出警告后)(full_load)
UnsafeLoader(也称为Loader向后兼容性):原始的Loader代码,可以通过不受信任的数据输入轻松利用。(unsafe_load)
加载YAML [ 反序列化 ]
注意⚠️,在5.1之后如果要使用yaml.load的时候就需要 + Loader参数来使用加载器
yaml.load(): 该方法返回一个Python对象
yaml.load(result, Loader=yaml.FullLoader) # 加载完整的YAML语言
yaml.load_all():
如果字符串或者文件中包含多个YAML文档,那么可以使用 yaml.load_all 函数将它们全部反序列化,得到的是一个包含所有反序列化后的YAML文档的生成器对象:
yaml.load_all(document, Loader=yaml.FullLoader)
转储YAML
with open(path, "w", encoding="utf-8") as f:yaml.dump(data, f, Dumper=yaml.SafeDumper) # 可选BaseDumper、SafeDumper
YAML语法【常用的】
# YAML中使用‘#’ 来表示注释(‘#’前面要有一个空格)
块序列: [ 反序列化对应的是 list]
使用破折号(dash) - 后跟一个空格(Space)来表示序列中的项。
单块序列【list】:
- id
- name
- age
with open('yaml文件地址', encoding="utf-8") as f:result = f.read()result = yaml.load(result, Loader=yaml.FullLoader)print(result)['id', 'name', 'age']
多块序列【嵌套list】:
在嵌套的块序列中,内层的序列可以直接从当前行开始而不必从新的一行开始
- - Python- Ruby- JavaScript- PHP
- - Unix- Linux- Windows
with open('yaml文件地址', encoding="utf-8") as f:result = f.read()result = yaml.load(result, Loader=yaml.FullLoader)print(result)[['Python', 'Ruby', 'JavaScript', 'PHP'], ['Unix', 'Linux', 'Windows']]
块映射:[ 反序列化对应的是 dict]
块内容中,使用冒号 : 后跟一个空格来分隔映射中的键和值。
初级样式:[ 普通的dict ]
name: bob
age: 28
gender: Male{'name': 'bob', 'age': 28, 'gender': 'Male'}
复杂样式:
复杂的键使用问号 ? 后跟一个空格来表示,如下所示
? !!python/tuple [0, 0]
: Start
? !!python/tuple [3, 5]
: End{(0, 0): 'Start', (3, 5): 'End'} # 列表不能成为键
嵌套样式:[ 字典 嵌套 字典]
Employee:Job_title: EmployeeSalary: 5000Annual Leave: 10
Manager:Job_title: ManagerSalary: 8000Annual Leave: 15{'Employee': {'Job_title': 'Employee', 'Salary': 5000, 'Annual Leave': 10},'Manager': {' Job_title': 'Manager', 'Salary': 8000, 'Annual Leave': 15}}
块映射可以嵌套在块序列 [ list 嵌套 字典]:
- name: PyYAMLstatus: 4license: MITlanguage: Python
- name: PySyckstatus: 5license: BSDlanguage: Python[{'name': 'PyYAML', 'status': 4, 'license': 'MIT', 'language': 'Python'},{'name': 'PySyck', 'status': 5, 'license': 'BSD', 'language': 'Python'}]
块映射 嵌套 块序列中:[ 字典 嵌套 列表 ]
Programing Languages:
- Java
- Swift
- C++
- Go
Operation System:
- Unix
- Linux
- Windows
- OSX{'Programing Languages': ['Java', 'Swift', 'C++', 'Go'],'Operation System': ['Unix', 'Linux', 'Windows']}
封装成一个操作YAML的工具类
class YamlUtil:__instance = Nonedef __new__(cls, *args, **kwargs):if not cls.__instance:print("YamlUtil first init")cls.__instance = super(YamlUtil, cls).__new__(cls, *args, **kwargs)return cls.__instancedef read_yaml(self, path):with open(path, encoding="utf-8") as f:result = f.read()result = yaml.load(result, Loader=yaml.FullLoader)return resultdef write_yaml(self, path, data):with open(path, "w", encoding="utf-8") as f:yaml.dump(data, f, Dumper=yaml.SafeDumper)yamlUtil = YamlUtil()
Python-PyYAML相关推荐
- python pyyaml模块使用示例:读取yaml文件内容
yaml文件内容 websites:YAML: yaml.orgRuby: ruby-lang.orgPython: python.orgversions:- version2:name: 2.x- ...
- python没有代码提示怎么设置_Python Kite 使用教程 轻量级代码提示
1: 概述 今天升级annacoda 插件 spyder (4.0.0 )的时候 提示安装kite ,这是什么玩意? 下载下来试一试? 原来:就是一个代码提示插件.. 说白了" 就是让开发者 ...
- python自然语言处理工具NLTK各个包的意思和作用总结
[转]http://www.myexception.cn/perl-python/464414.html [原]Python NLP实战之一:环境准备 最近正在学习Python,看了几本关于Pytho ...
- mysql导入greenplum_greenPlum中通过gpfdist导入文本数据到数据库表中
1.python版本要求2.4.4以上 [root@test install]# python Python 2.6.2 (r262:71600, May 14 2009, 10:46:21) [GC ...
- 自动化运维工具Ansible实战(一)简介和部署
一.Ansible的介绍 Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点.实现了批量系统配置 ...
- 最新OpenHarmony系统一二级目录整理
最新OpenHarmony系统一二级目录整理 坚果:润开鸿技术专家,华为HDE,InfoQ签约作者,OpenHarmony布道师,擅长HarmonyOS应用开发.跨平台Flutter开发.熟悉服务卡片 ...
- linux medea 软件安装,linux下超详细教程安装phonopy
参考资料: (1) http://blog.csdn.net/txcokokok/article/details/42178889 (2) http://blog.sina ...
- Linux界面下运行vaspkit,linux下超详细教程安装phonopy - 第一原理 - 小木虫 - 学术 科研 互动社区...
参考资料: (1) http://blog.csdn.net/txcokokok/article/details/42178889 (2) http://blog.sina ...
- symfony入门学习资料之九:YAML格式介绍
symfony入门学习资料之九:YAML格式介绍 由于EDUSOHO的项目原因,中断了对symfony框架的继续学习,今天回顾了前面的总结,总结了八节.从建立简单的页面.控制器.路由.模板等,甚至包括 ...
- python读取配置文件获取所有键值对_python笔记14-读取yaml配置文件(pyyaml)
yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...
最新文章
- ❤比较两种模糊特效❤filter: blur(10px)和backdrop-filter: blur(10px)的区别
- BZOJ 1977: [BeiJing2010组队]次小生成树(Kruskal+树上倍增)
- b. Suffix Zeroes
- python出现的次数最多的元素_Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算...
- python 定义method_python进阶14:实例方法和类方法、types.MethodType()
- 比较全的C语言面试题
- 13寸笔记本电脑尺寸_如何判断行李箱的尺寸?标准行李箱尺寸对照表(13~32寸)
- java中编码问题_[干货预警]一次搞懂Java中的编码问题
- python如何安装pdfminer_Python 3.6 中使用pdfminer解析pdf文件的实现
- 张朝阳一天只睡4小时?不知道,反正我每天都睡足7小时
- 乔治城大学 计算机排名,乔治城大学计算机科学硕士排名第40(2020年TFE Times排名)...
- nginx访问php文件an error occurred,nginx提示 An error occurred错误问题解决办法
- java8中for循环的几种写法
- 人工智能调度如何改变现场服务行业
- 快速理解深度信念网络
- 全局变量和局部变量笔记
- linux库怎么安装路径设置,Linux libtins 库安装教程
- Fire Net 放碉堡 —— DFS
- SPSS Modeler基础操作与模型求解
- 利用先进先出原则统计易飞ERP呆滞库存
热门文章
- 使用ResponseBodyAdvice实现下载注解
- 工程施工监理平台app开发 开创工程监理服务新理念
- 通达OA未授权任意文件上传及文件包含导致远程代码执行漏洞
- radmin自动启动服务器,Radmin自动连接器+服务端一键安装
- C语言学生籍贯信息记录簿
- spidermonkey学习
- Duplicate Cleaner - 重复文件 / 相似文件扫描 - 构建深度学习标注数据集
- Dalsa智能相机使用流程
- 爬取了大众点评和去哪儿网上4312家长沙美食,看看什么值得吃?|凹凸数读
- 键盘与计算机连接,罗技键盘怎么连接电脑?原来连接的方式这么简单!