zoukankan      html  css  js  c++  java
  • Yaml读写文件处理方式

    一、格式

      安装pyYaml包

      yaml主要有三种类型的数据原语:Maps,Lists,Scales(按照官方法表达:“mappings (hashes/dictionaries), sequences (arrays/lists) and scalars (strings/numbers)”),基于这三种数据原语可以组合出任何数据结构。

    • 破折号和空格( “-” ):Lists集合
    • 冒号和空格( “:” ) :Maps键值对
    • 井号( “#” ):注释
    • 三个破折号( “---” ):文档内容分隔线(多用于文档开始的地方)
    • 三个冒号( “...” ):表示文档的结束
    • 锚点(“&”),重复项抛锚(“*”):两者成对表达,像定义变量a,再引用变量a的关系,是一种重复项的替换。

      yaml基于缩进的作用域跟python语法格式比较相似,缩进块方便数据的结构化。

    注意:yaml文件大小写敏感,不允许使用用tab制表符号代替空格。

    1.列表

    - a
    - b
    ['a', 'b']

    2.字典

    boss:
      appActivity: .module.launcher.WelcomeActivity
      appPackage: com.hpbr.bosszhipin
      automationName: UiAutomator2
      deviceName: ZXB
      newCommandTimeout: 6000
      noReset: true
      platformName: Android
      plathformVersion: '10'
    {'boss': {'appActivity': '.module.launcher.WelcomeActivity', 'appPackage': 'com.hpbr.bosszhipin', 'automationName': 'UiAutomator2', 'deviceName': 'ZXB', 'newCommandTimeout': 6000, 'noReset': True, 'platformName': 'Android', 'plathformVersion': '10'}}

    安装yaml包

    1.yaml文件的读取

    def get_Yaml_boss_data(fileName):
        '''
        获取单个yaml文件页面数据
        :param fileDir: 文件路径
        :return:页面数据
        '''
        #打开yaml文件
        fileDir= os.path.dirname(os.path.dirname(__file__))+f'/appium_basicCode/my_appium_code/boss/boss_data/{fileName}'
    
        fo = open(fileDir, 'r', encoding='utf-8')
        #使用第三方库去读取数据
        # res = yaml.loads(fo,loader=yaml.FullLoader) #处理警告
        res = yaml.load(fo,Loader = yaml.FullLoader)
        return res

    2.yaml文件写入:写入也可以追加写入 "a",你懂的

    def writ_yaml_data(fileName,data):
        '''
        yaml里面写入内容
        :param fileName:文件名
        :param data:需要写入的数据
        :return:
        '''
        fileDir= os.path.dirname(os.path.dirname(__file__))+f'/appium_basicCode/my_appium_code/boss/boss_data/{fileName}'
    
        fo = open(fileDir, 'w', encoding='utf-8')
        #使用第三方库去读取数据
        res = yaml.dump(data,fo)
        return res

    3.yaml文件的读写

        boss_desired_capabilities = {'boss':{
            'platformName': 'Android',
            'plathformVersion': '10',
            'deviceName': 'zhuxibo',
            'appPackage': 'com.hpbr.bosszhipin',
            'appActivity': '.module.launcher.WelcomeActivity',
            'noReset': True,
            'newCommandTimeout': 6000,
            'automationName': 'UiAutomator2',  # 或者UiAutomator1
            # 跳过UI2的安装,如果第一次运行程序,不要添加该配置
            # 'skipServerInstallation':True
    
        }}
        #写入数据
        writ_yaml_data('boss_para_data.yaml',boss_desired_capabilities)
        res = get_Yaml_boss_data('boss_para_data.yaml')
        print(res)
        #修改需要修改的数据
        res['boss']['deviceName']='ZXB'
        #再将数据写入
        res1= writ_yaml_data('boss_para_data.yaml',res)
        print(res1)
  • 相关阅读:
    去掉python的警告
    LeetCode--687. 最长同值路径
    Python中获取字典中最值对应的键
    python -- 解决If using all scalar values, you must pass an index问题
    keras自定义padding大小
    评价指标的局限性、ROC曲线、余弦距离、A/B测试、模型评估的方法、超参数调优、过拟合与欠拟合
    一言难尽的js变量提升
    vue-cli 脚手架 安装
    十分钟入门 Less
    Echarts的资源文件
  • 原文地址:https://www.cnblogs.com/zhuxibo/p/14250579.html
Copyright © 2011-2022 走看看