龙空技术网

一种比Xml更敏捷的配置方式,Python Yaml 配置文件解析模块详解

软件测试开发技术栈 1061

前言:

现在看官们对“macpythonyaml”大致比较关怀,小伙伴们都需要学习一些“macpythonyaml”的相关内容。那么小编同时在网摘上网罗了一些有关“macpythonyaml””的相关知识,希望看官们能喜欢,我们一起来学习一下吧!

为什么选择YamlYaml的可读性好、扩展性好。Yaml和脚本语言的交互性好。Yaml使用实现语言的数据类型。Yaml有一个一致的信息模型。Yaml易于实现。

Yaml试图用一种比Xml更敏捷的方式,来完成Xml所完成的任务。

Yaml 支持的三类数据结构

对象:键值对的集合,又称为映射(mapping)、 哈希(hashes)、 字典(dictionary)。键值对用冒号 “:” 结构表示,“:”与值之间需用空格分隔。

示例如下:

数组:一组按次序排列的值,又称为序列(sequence) 、列表(list)。数组前加有 “-” 符号,“-”与值之间需用空格分隔。

示例如下:

纯量:纯量是最基本的,不可再分的值。字符串、整型、浮点型、布尔型、NULL、时间、日期。 None值可用null或“~”表示。

示例如下:

Yaml 基本语法规则大小写敏感。使用缩进表示层级关系,缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。# 表示注释,# 需在行首。如果字符串没有空格或特殊字符,不需要加引号,但如果其中有空格或特殊字符,则需要加单引引号。注意单引号和双引号的区别,单引号中的特殊字符转到Python会被转义,也就是到最后是原样输出了,双引号不会被Python转义。Yaml 特殊语法规则引用,“&”用来建立锚点,并指定锚点的名字,例如 &price,“* ”用来引用锚点,例如 *price。<< 表示合并到当前数据,例如 <<: *common,另外 << 合并的功能,如果有多个锚点在一起合并被引用的时候,是最先引用的变量会覆盖后引用的变量。示例如下:

示例如下:

格式强制转换,yaml可以用两个感叹号来表示强制转换,如,!!str 表示强制转换为字符串;!!int 表示强制转换为整型;!!float 表示强制转换为浮点类型;!!bool 表示强制转换为布尔类型;!!null 空值;!!set 集合;!!omap / !!pairs 键值列表 / 对象列表。

示例如下:

一个“综合体”的Yaml 文件示例

其Json格式结构如下:

Python Yaml 安装

 pip install pyyaml
Python Yaml常用操作

PythonYaml有四个比较常用的用法,主要有load()、dump()、load_all()、dump_all()。这篇文章主要就是了解一下这四个方法。

yaml.load()

读取yaml文件

yaml.load_all()

多个文档在一个yaml文件,使用 --- 分隔方式来分段。如果string或文件包含几段yaml文档,你可以使用yaml.load_all来解析全部的文档,生成一个迭代器。

示例如下:

yaml.dump() 写入yaml文件

yaml.dump 将一个python对象生成为yaml文档。

运行结果如下:

运行完之后,发现字典嵌套的字典,出现了大括号:{price: 17.99, release_time: 2019-7-26, special_id: 9527, status: true},这不是真正的yaml数据,不是我们想要的,如果想要集合总是以块样式表示,可以将 dump() 方法的 default_flow_style 参数值设为 False ,如下所示:

运行结果如下:

yaml.dump_all()

将多个段输出到一个文件中。

运行结果如下:

标签: #macpythonyaml