python yaml配置文件,解析yaml文件

  python yaml配置文件,解析yaml文件

  Yaml其实类似于json和txt,都属于一种文本格式。在我们的实际工作中,经常使用yaml文件作为服务期配置文件。本文将介绍一些用Python读取yaml文件的方法,供大家参考。

  00-1010 yaml文件的应用场景和格式第三方包yaml文件格式应用场景介绍-pyyaml读取YAML文件的方法演示案例

  

目录

  

yaml 文件的应用场景与格式介绍

  Yaml其实类似于json和txt,都属于一种文本格式。在我们的实际工作中,经常使用yaml文件作为服务期配置文件。比如一些定义好的不会被修改的信息,我们可以通过定义yaml文件,然后读取这样的文件,将数据导入到我们的服务中使用。

  由于yaml文件通常被用作配置文件,因此很少被修改。因此,在这一章中,我们只学习阅读yaml文件。

  

yaml 文件的应用场景

  ==首先你要知道yaml不是标记语言。与json类似,yaml也用于序列化数据。(内容格式为键值对,但不同于dict数据类型的键值对的显示风格)。内容格式人性化,易于阅读。==yaml文件格式后缀是。yaml。

  注意:YAML有一个小怪癖。所有YAML档案的起始行应该是-。这是YAML格式的一部分,表示文件的开始。

  YAML语法格式如下:3360

  1,区分大小写

  2.缩进是用来表达层次关系的。

  3.缩进空格的数量并不重要,只要同一级别的元素向左对齐即可,通常是开头缩进两个空格。

  4.不支持制表符缩进,只使用空格缩进。

  5.在字符后缩进一个空格,如冒号、逗号、短横线(-)等。

  6、-表示YAML格式,一个文件的开头,用来分隔文件。

  7.“#”表示注释(yaml文件只有行注释)

  YAML支持三种数据结构。

  对象:键值对的集合,也称为映射)/散列)/字典。

  数组:按顺序排列的一组值,也叫序列)/列表。

  标量:单一的、不可分割的值。

  下面详细介绍三种数据结构:

  yaml中的值有以下基本类型:

  字符串整形浮点布尔空时间日期yaml文件内容格式示例如下:

  #评论

  # 1-1,字典关键字:值

  Username:晓明#冒号后面跟一个空格。

  密码: 123456

  信息:配置#中文-不推荐,它可能是乱码。

  # 1-2,字典嵌套

  NAME_PSW:

  姓名:小明

  密码:123456

  # 2-1,列表格式

  -10

  -20

  -30

  # 2-2,列表嵌套

  -10

  -20

  -

  -100

  -200

  # 3-1.在列表中设置词典

  -10

  -20

  -

  姓名:汤姆

  密码: 123456

  # 4-1.字典集列表

  姓名:汤姆

  信息:

  -10

  -20

  -30

  # 5-1.如果引号有英文字母或汉字,则是没有引号的字符串。

  信息:“HELLO word”#引号可以省略。

  # 5-2.什么引号:如果有特殊字符\ n不加引号按原字符样式输出;如果显示特殊字符效果,请添加双引号。

  信息:“你好\ n世界”

  # 6-1,引用一个数据可以用在很多地方,使用变量。

  #变量名定义变量

  # *变量名是指变量

  名字:一个汤姆

  名称1: *a

  # 7-1,你能把多个YAML写在一起吗,用一个字典和一个列表,并加上分隔符-

  -10

  -20

  -30

  -

  名称:sq

  # 8-1,yamL文件可以是

  以有YAML

  DATA: conf.yaml

  

  

  

第三方包 - pyyaml

  pyyaml 的安装:pip install PyYAML [若安装失败,参考 - 包与模块 章节的 如何安装第三方包]

  pyyaml 的导入:import pyyaml

  

  

  

读取 yaml 文件的方法

  用法如下:

  

file = open(yaml_file, r)

  daya = yaml.load(file.read())

  file.close

  

  返回字典类型(示例):

  

{

   name: 托尼·史塔克

   age: 52

   sex: man

  }

  

  

  

yaml文件读取演示案例

  创建一个 test.yaml 文件,内容如下:

  

name:

   托尼·史塔克 # 字符串引号可以不加 【这里的缩进使用的是tab键,所以如果直接复制粘贴,在运行下方脚本时会报错,记得改成空格】

  invention:

   - Iron Man Armor

   - Arc reactor

   - Ultron

  teammate:

   - Steven Rogers

   - Thor Odinson

   - Natasha Romanoff

   - Bruce Banner

   - Clint Barton

  apprentice:

   彼得·帕克

  wife:

   佩珀·波兹

  father:

   霍华德·史塔克

  

  创建一个 test_yaml.py 文件,读取 test.yaml 文件:

  

# coding:utf-8

  import yaml

  def read(path):

   with open(path, r) as file:

   data = file.read()

   result = yaml.load(data)

   # result = yaml.load(data, Loader=yaml.FullLoader)

   return result

  if __name__ == __main__:

   result = read(test.yaml)

   print(result)

  

  这里执行的时候出现了一个报错 :TypeError: load() missing 1 required positional argument: 'Loader'。 如下图:

  

  这是因为在 YAML 5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader,通过默认加载器(FullLoader)禁止执行任意函数,该load函数也变得更加安全。所以我们需要将 result = yaml.load(data) 改为 result = yaml.load(data, Loader=yaml.FullLoader) 。

  解决该 TypeError 不单单 只有 yaml.load(data, Loader=yaml.FullLoader) 这一个方法。

  以下三选一即可解决该 TypeError

  

yaml.safe_load(file.read())

  yaml.load(file.read(), Loader=yaml.FullLoader)

  yaml.load(file.read(), Loader=yaml.CLoader)

  

  运行结果如下:

  

  到此这篇关于Python学习之yaml文件的读取详解的文章就介绍到这了,更多相关Python yaml读取内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: