• python3+Appium自动化08-数据配置yaml


    yaml简介

    yaml是一种简洁的非标记语言。yaml以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读

    由于实现简单,解析成本低,yaml特别适合在脚本语言中使用。现有的语言实现:Ruby,Java,Perl,Python,PHP,JavaScript

    yaml是专门用来写配置文件的语言,非常简洁强大,远比JSON格式方便。同一段数据JSON和yaml表示分别如下:

    Json

    { name: 'Tom Smith',age: 37,spouse: { name: 'Jane Smith', age: 25 },children: [ { name: 'Jimmy Smith', age: 15 },{ name: 'Jenny Smith', age: 12 } ] }

    yaml

    name: Tom Smith
    age: 37
    spouse:
        name: Jane Smith
        age: 25
    children:
     - name: Jimmy Smith
       age: 15
     - name: Jenny Smith
       age: 12

    语法特点

    • 大小写敏感
    • 使用缩进表示层级关系
    • 缩进时不允许使用Tab键,只允许使用空格
    • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

    yaml下载安装

    使用pip安装pyyaml模块

     yaml数据类型详解

    支持数据类型

    • 纯量:单个的,不可再分的值
    • 数组:一组按次序排列的值,又称为序列(sequence)/列表(list)
    • 对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)

    纯量

    数据最小的单位,不可以再分割。类似于Python的单个变量

    list数组

    于Python的list数组结构类似,数组元素使用“-”开头,也可以根据缩进进行数组嵌套

    -Jack
    -Honey
    -Tom
    #也可以写成一行
    [Jack,Honey,Tom]

    对应到python的list写法如下:

    ['Jack','Honey','Tom']

    对象

    对象的一组键值对,使用冒号结构表示。类似python中的字典数据结构

    platformName: Android
    deviceName: 192.168.175.101:5555
    #yaml也允许将所有键值对写成一个行内对象
    {platformName: Android,deviceName: 192.168.175.101:5555}

    注意:冒号后面一定要有空格!对应到python字典的写法如下:

    {'platformName': 'Android','deviceName': '192.168.175.101:5555'}

    数据嵌套

    yaml数据嵌套表示可以将上面的各类数据根据实际场景进行组合嵌套

    场景

    Tom Smith 37岁,他有一个妻子叫 Jane Smith,25岁。 另外他有2个孩子,一个叫Jimmy Smith,15岁;另外一个叫Jenny Smith ,12岁。

    #yaml表示
    name: Tom Smith
    age: 37
    spouse:
        name: Jane Smith
        age: 25
    children:
     - name: Jimmy Smith
       age: 15
     - name: Jenny Smith
       age: 12
    
    #转为Python写法
    {'name':'Tom Smith','age':37,'spouse':{'name':'Jane Smith','age':25},'childern':[{'name':'Jimmy Smith','age':15},{'name':'Jenny Smith','age':12}]}

     yaml数据操作

    数据读取

    load(stream, Loader=Loader) 解析文件流中的第一个YAML文档并生成相应的Python对象。

    数据转化

    dump()可以将Python对象序列化成YAML流。如果stream为None,则返回生成的字符串

     1 #coding=utf-8
     2 import yaml
     3 file=open('familyInfo.yaml','r')
     4 #解析文件流中的第一个ymal文档并生成相应的Python对象
     5 data=yaml.load(file)
     6 print(data)
     7 print(data['name'])
     8 print(data['age'])
     9 print(data['spouse'])
    10 print(data['spouse']['name'])
    11 print(data['children'])
    12 print(data['children'][0]['name'])
    13 #数据修改,只是变量类型的数据变更,不会真正修改到yaml配置表中的数据
    14 data['name']='honey'
    15 print(data['name'])
    16 #dump()可以将python对象转换为yaml流。如果stream为None,则返回生成的字符串
    17 data=yaml.dump(data)
    18 print(data)

     

  • 相关阅读:
    第七周进度总结
    第六周进度总结
    第五周进度总结
    《大道至简》读后感
    第四周进度总结
    第三周进度总结
    第二周进度总结
    第一周进度总结
    top工具
    系统监控的一些工具w , vmstat
  • 原文地址:https://www.cnblogs.com/shenhainixin/p/9294887.html
Copyright © 2020-2023  润新知