python yaml配置文件,python yaml.load

  python yaml配置文件,python yaml.load

  本文主要介绍Python使用Pyyaml库读写YAML文件的方法,包括YAML基本概念的介绍和YAML语法的知识。结合示例代码,给大家讲的很详细,有需要的朋友可以参考一下。

  00-1010 I、yaml入门II、yaml语法III、安装第三方yaml文件处理库Pyyaml IV、从yaml读取yaml文件1、从yaml读取字典2、从yaml读取list3、从yaml读取元组4、从YAML读取多组数据5、写入YAML文件1、将单组数据写入YAML文件2、将多组数据写入和读取YAML文件Python。最近在构建自动化测试项目的过程中,经常会遇到yaml文件的读写问题。为了方便后续使用,我们决定做笔记。

  最近在构建自动化测试项目的过程中,经常会遇到yaml文件的读写问题。为了方便后续使用,我们决定做笔记。

  

目录

  YAML是另一种标记语言的缩写,通常用于编写项目配置,也可用于数据存储,这比conf等配置文件更简洁。

  

一,YAML 简介

  支持的数据类型:字典、列表、字符串、布尔、整数、浮点数、Null、时间等。

  基本语法规则:1。区分大小写

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

  3.同一级别的元素向左对齐。

  4.键值对由冒号“3360”结构表示,冒号和值应该用空格分隔。

  5.数组前面有一个“-”符号,符号和值应该用空格隔开。

  6.None的值可以用null和~来表示。

  7.在数据组之间使用3条线分段。

  8.#的意思是注释,但是不能在一段代码的末尾加上# comment,否则会报错。

  注:我在网上发现各种博客都提到缩进yaml时不能用tab键,但是我在pycharm编辑器中实际使用时可以用tab键缩进,读写时也没有报错!

  

二,YAML 语法

  Python没有自己的库来处理yaml文件。你需要下载第三方库PyYAML或者ruamel.yaml这里我们安装PyYAML。

  pip安装pyyaml

  #下载速度慢的话添加清华图片来源。

  pip安装py YAML-I https://pypi.tuna.tsinghua.edu.cn/simple

  

三,安装第三方yaml文件处理库PyYAML

  

四,读取yaml文件

  yaml中的字典格式如下:

  # yaml文件,文件名为yamlData。

  os: Android

  osVersion: 10

  账号:

  用户名:小qq

  密码: 123456

  deviceName:为空

  appPackage: ~

  bool1: True

  读取字典代码:

  # @author:给你一个空白页

  导入yaml

  带开(。/yamlData.yml , r ,编码=utf-8 )作为f:

  result=yaml.load(f.read(),Loader=yaml。满载)

  打印(结果,类型(结果))

  print(结果[os],type(结果[os]))

  print(结果[osVersion],type(结果[osVersion]))

  打印(结果[帐户],类型(结果[帐户]))

  打印(结果[帐户][用户名])

  打印(结果[设备名])

  打印(结果[appPackage])

  print(结果[bool1],type(r

  esult[bool1]))

  读取结果:

  

{'os': 'Android', 'osVersion': 10, 'account': {'username': 'xiaoqq', 'password': 123456}, 'deviceName': None, 'appPackage': None} <class 'dict'>
Android <class 'str'>
10 <class 'int'>
{'username': 'xiaoqq', 'password': 123456} <class 'dict'>
xiaoqq
None
None
True <class 'bool'>

  

  从读取结果可以看出:

  1,读取出来的数据不会改变原数据类型,即yaml里是什么数据类型,读出来就是什么类型。

  2,Loader=yaml.FullLoader参数不写的话对结果不会有影响,但运行时会出现警告信息。

  3,yaml.load(f.read(), Loader=yaml.FullLoader)也可以写成yaml.load(f, Loader=yaml.FullLoader),读取出来的结果相同。

  

  

2,从yaml中读取list

  yaml中list格式:数据前加'-' 并使用空格与数据间隔开,如下:

  

# yaml文件名yamlData

  - Android

  - 10

  - null

  - ~

  - True

  读取list代码:

  

# @author: 给你一页白纸

  import yaml

  with open(./yamlData.yml, r, encoding=utf-8) as f:

   result = yaml.load(f.read(), Loader=yaml.FullLoader)

  print(result, type(result))

  读取结果:

  

['Android', 10, None, None, True] <class 'list'>

  

  

  

3,从yaml中读取元组

  yaml中存储元组格式:yaml中使用!!对数据类型进行转换,yaml中tuple由list转换而来。如下:

  

# yaml文件名yamlData

  !!python/tuple

  - Android

  - 10

  - null

  - ~

  - True

  读取元组代码:

  

# @author: 给你一页白纸

  import yaml

  with open(./yamlData.yml, r, encoding=utf-8) as f:

   result = yaml.load(f.read(), Loader=yaml.FullLoader)

  print(result, type(result))

  读取结果:

  

('Android', 10, None, None, True) <class 'tuple'>

  

  在实际使用中,很多的时候往往是多种类型嵌套的数据。如下yaml数据

  

# yaml文件名yamlData

  os: Android

  osVersion: 10

  account:

   - username1: xiaoqq

   - password1: 123456

   - username2: Lilei

   - password2: 888888

  deviceName: null

  appPackage: ~

  bool1: True

  读取结果:

  

{'os': 'Android', 'osVersion': 10, 'account': [{'username1': 'xiaoqq'}, {'password1': 123456}, {'username2': 'Lilei'}, {'password2': 888888}], 'deviceName': None, 'appPackage': None, 'bool1': True}

  

  

  

4,从yaml中读取多组数据

  yaml多组数据时,每组数据之间需要用3横杠分隔'---',如下:

  

os: Android

  osVersion: 10

  account1:

   username1: xiaoqq

   password1: 123456

  ---

  os: ios

  osVersion: 12

  account1:

   username2: Lilei

   password2: 888888

  从yaml中读取多组数据时需要使用yaml.load_all()方法,返回结果为一个生成器,需要使用for循环语句获取每组数据。代码如下:

  

# @author: 给你一页白纸

  import yaml

  with open(./yamlData.yml, r, encoding=utf-8) as f:

   result = yaml.load_all(f.read(), Loader=yaml.FullLoader)

   print(result, type(result))

   for i in result:

   print(i)

  读取结果:

  

<generator object load_all at 0x000001F78EBD5B48> <class 'generator'>
{'os': 'Android', 'osVersion': 10, 'account1': {'username1': 'xiaoqq', 'password1': 123456}}
{'os': 'ios', 'osVersion': 12, 'account1': {'username2': 'Lilei', 'password2': 888888}}

  

  

  

五,写入yaml文件

  

  

1,单组数据写入yaml文件

  使用yaml.dump()方法,加入allow_unicode=True参数防止写入的中文乱码,如下:

  

# @author: 给你一页白纸

  import yaml

  apiData = {

   "page": 1,

   "msg": "地址",

   "data": [{

   "id": 1,

   "name": "学校"

   }, {

   "id": 2,

   "name": "公寓"

   "id": 3,

   "name": "流动人口社区"

   }],

  }

  with open(./writeYamlData.yml, w, encoding=utf-8) as f:

   yaml.dump(data=apiData, stream=f, allow_unicode=True)

  写入结果:

  

data:
- id: 1
name: 学校
- id: 2
name: 公寓
- id: 3
name: 流动人口社区
msg: 地址
page: 1

  

  

  

2,多组数据写入yaml文件

  使用yaml.dump_all()方法,如下:

  

# @author: 给你一页白纸
import yaml
apiData1 = {
"page": 1,
"msg": "地址",
"data": [{
"id": 1,
"name": "学校"
}, {
"id": 2,
"name": "公寓"
"id": 3,
"name": "流动人口社区"
}],
}
apiData2 = {
"page": 2,
"name": "酒店"
"name": "医院"
"name": "养老院"
with open('./writeYamlData.yml', 'w', encoding='utf-8') as f:
yaml.dump_all(documents=[apiData1, apiData2], stream=f, allow_unicode=True)

  

  写入结果:

  

data:
- id: 1
name: 学校
- id: 2
name: 公寓
- id: 3
name: 流动人口社区
msg: 地址
page: 1
---
data:
- id: 1
name: 酒店
- id: 2
name: 医院
- id: 3
name: 养老院
msg: 地址
page: 2

  

  在Python中除了PyYAML库之外,还有ruamel.yaml库也可以对yaml文件进行读写操作,后续再记笔记进行介绍。

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

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

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