前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python读写yaml文件

Python读写yaml文件

作者头像
Criss@陈磊
发布2019-09-29 20:09:16
6.6K0
发布2019-09-29 20:09:16
举报
文章被收录于专栏:测试技术圈测试技术圈

yaml文件介绍

yaml是一个专门用来写配置文件的语言。

yaml文件规则

  • 区分大小写;
  • 使用缩进表示层级关系;
  • 使用空格键缩进,而非Tab键缩进
  • 缩进的空格数目不固定,只需要相同层级的元素左侧对齐;
  • 文件中的字符串不需要使用引号标注,但若字符串包含有特殊字符则需用引号标注;
  • 注释标识为#

yaml文件数据结构

  • 对象:键值对的集合(简称 "映射或字典"),键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔
  • 数组:一组按序排列的值(简称 "序列或列表"),数组前加有 “-” 符号,符号与值之间需用空格分隔
  • 纯量(scalars):单个的、不可再分的值(如:字符串、bool值、整数、浮点数、时间、日期、null等)
  • None值可用null可 ~ 表示

Python的yaml库

pip install pyyaml

使用yaml

from ruamel import yaml

使用

在我们做自动化测试中,可用作配置文件,配置一些服务器域名、mysql配置、登录信息、toekn等很方便快速读取

将字典写入yaml文件
desired_caps = {
  'platformName':'Android哈哈哈',#移动设备系统IOS或Android
  'platformVersion':'7.1.2',#Android手机系统版本号
  'deviceName':'852',#手机唯一设备号
  'app':'C:\\Users\\wangli\\Desktop\\kbgz-v5.9.0-debug.apk',#APP文件路径
  'appPackage':'com',#APP包名
  'appActivity':'cui.setup.SplashActivity',#设置启动的Activity
    'noReset':'True',#每次运行不重新安装APP
  'unicodeKeyboard':'True', #是否使用unicode键盘输入,在输入中文字符和unicode字符时设置为true
  'resetKeyboard':'True',#隐藏键盘
    'autoGrantPermissions':'True',
    'autoAcceptAlerts':["python","c++","java"],
    'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}
  }
with open("test.yaml","w",encoding="utf-8") as f:
    yaml.dump(desired_caps,f,Dumper=yaml.RoundTripDumper)

写入文件如下:

deviceName: '852'
unicodeKeyboard: 'True'
autoAcceptAlerts:
- python
- c++
- java
autoGrantPermissions: 'True'
platformVersion: 7.1.2
platformName: "Android\u54C8\u54C8\u54C8"
app: C:\Users\wangli\Desktop\kbgz-v5.9.0-debug.apk
appPackage: com
chromeOptions:
  androidProcess: com.tencent.mm:tools
appActivity: cui.setup.SplashActivity
noReset: 'True'
resetKeyboard: 'True'
将列表写入yaml文件
list=['python','java','c++','C#',{'androidProcess': 'com.tencent.mm:tools'},["python","c++","java"]]
with open("test.yaml","w",encoding="utf-8") as f:
    yaml.dump(list,f,Dumper=yaml.RoundTripDumper)

写入文件如下:

- python
- java
- c++
- C#
- androidProcess: com.tencent.mm:tools
- - python
  - c++
  - java
读取yaml文件中字典

用python读取yaml文件案例,先用open方法读取文件数据,再通过load方法转成字典,这个load跟json里面的load是相似的,yaml文件内容:

chromeOptions:
  androidProcess: com.tencent.mm:tools
appActivity: cui.setup.SplashActivity
noReset: 'True'
app: C:\Users\wangli\Desktop\kbgz-v5.9.0-debug.apk
appPackage: com
platformVersion: 7.1.2
resetKeyboard: 'True'
autoGrantPermissions: 'True'
deviceName: '852'
autoAcceptAlerts:
- python
- c++
- java
unicodeKeyboard: 'True'
platformName: "Android\u54C8\u54C8\u54C8"
读取yaml
with open('test.yaml', 'r', encoding='utf-8') as f:
  print(yaml.load(f.read(),Loader=yaml.Loader))

读出内容如下

{'platformVersion': '7.1.2', 'resetKeyboard': 'True', 'appPackage': 'com', 'autoAcceptAlerts': ['python', 'c++', 'java'], 'autoGrantPermissions': 'True', 'deviceName': '852', 'appActivity': 'cui.setup.SplashActivity', 'unicodeKeyboard': 'True', 'noReset': 'True', 'platformName': 'Android哈哈哈', 'app': 'C:\\Users\\wangli\\Desktop\\kbgz-v5.9.0-debug.apk', 'chromeOptions': {'androidProcess': 'com.tencent.mm:tools'}}
读取yaml文件中列表
yaml文件内容
- python
- java
- c++
- C#
- androidProcess: com.tencent.mm:tools
- - python
  - c++
  - java

读取yaml文件

with open('test.yaml', 'r', encoding='utf-8') as f:
  print(yaml.load(f.read(),Loader=yaml.Loader))

读取出内容如下

"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
['python', 'java', 'c++', 'C#', {'androidProcess': 'com.tencent.mm:tools'}, ['python', 'c++', 'java']]

Process finished with exit code 0
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 质问 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • yaml文件介绍
    • yaml文件规则
      • yaml文件数据结构
      • Python的yaml库
        • 使用yaml
          • 使用
            • 将字典写入yaml文件
            • 将列表写入yaml文件
            • 读取yaml文件中字典
            • 读取yaml
            • 读取yaml文件中列表
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档