Python 使用 ini&yaml 配置文件

发布于 更新于
本文目录
  1. 前言
  2. 一、配置文件类型
  3. ini
  4. yaml
  5. 二、ini使用
  6. 语法
  7. configparser使用
  8. 注意点
  9. 三、yaml文件
  10. pyyaml安装
  11. yaml特点
  12. 支持数据类型
  13. yaml文件写法案例
  14. 使用

技术文章自动化测试

配置文件常用的有2种,第一种是*.ini文件,实际上*.ini文件是Initialization file的缩写,即为初始化文件,是Windows系统配置文件所采用的存储格式,统管Windows的各项配置,用户可以通过修改对应的*.ini文

前言

  • 配置文件常用的有2种,第一种是*.ini文件,实际上*.ini文件是Initialization file的缩写,即为初始化文件,是Windows系统配置文件所采用的存储格式,统管Windows的各项配置,用户可以通过修改对应的*.ini文件来实现不同的初始化配置(仅专业人士操作)

  • 第二种是yaml文件,YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式

  • 那么问题来了,我们python自动化测试的过程中能使用这些配置文件吗?答案是肯定的,今天我们就来一起学习一下python如何使用*.ini文件和yaml文件。

一、配置文件类型

  • ini

  • yaml

二、ini使用

  • 语法

    [section1] key1=val1 key2=val2 [section2] key1=val1 key2=val2

  • configparser使用

    • 导入包 from configparser import ConfigParser

    • 实例化 conf = ConfigParser() conf.read('test.ini', encoding="utf-8")

    • 掌握

      • 获取所有section sections = conf.sections()

      • 获取指定section下所有的key keys = conf.options('log1')

      • 获取指定section下所有的key,value val_list = conf.items('your_section')

      • 获取指定section指定key的值

        • 默认读取str value = conf.get('your_section','key')

        • 获取布尔值 booleans = conf.getboolean('your_section','key1')

        • 获取数字为int number = conf.getint('your_section','key1')

        • 获取数字类型小数 float = conf.getfloat('your_section','key1')

    • 了解

      • 添加sections(操作内存) conf.add_section('your_section')

      • 添加key,val(操作内存) conf.set('your_section','key22','val22')

      • 删除(操作内存) conf.remove_option('your_section', "key1")

      • 写入文件 将你内存你的数据全部写入文件进行覆盖,conf初始化的时候读取的是所有对象 conf.write(fp=open(file=file_path,mode='w'))

  • 注意点

    • [section]不能重复

    • 同一个[section]key不能重复

    • 等号前后不要用空格

    • 默认类型为字符串

    • 添加、删除、修改只是对内存进行修改,并不会修改实际文件

  • 封装

    from configparser import ConfigParser
    import os
    """
    继承ConfigParser类
    然后初始化编码格式
    """
    class ReadConf(ConfigParser):
        def __init__(self,file_path):
            super().__init__()
            self.read(filenames=file_path,encoding='utf-8')
    
    file_path = os.path.join(os.path.dirname(__file__), 'test.ini')
    conf=ReadConf(file_path=file_path)
    
    #使用直接导入conf实例
    from confFile.conffengzhuang import conf
    values = conf.options('log1')
    print(values)
    输出:['key1', 'key2']

三、yaml文件

  • pyyaml安装

    pip install pyyaml

  • yaml特点

    • 大小写敏感

    • 使用缩进表示层级关系

    • 禁止使用tab键,只能使用空格键

    • 缩进长度无限制,只要是对齐的就算是同一个层级

    • 字符串可以不用引号标注

    • 使用#进行注释

    • 一个yaml文件对外只能有一个类型(读出来要么是dict,要么是list)

    • 读取特点,一次性全部读取

    • 读取出来的是python对象,可以直接使用

  • 支持数据类型

    • 字典 通过(:)来连接,冒号后面要带一个空格 key: val

    • 列表 使用连接字符(-)表示,- 后面要带一个空格 - hello

    • scalar、纯量

      • 字符串、数字、布尔值、不可变数据类型

  • yaml文件写法案例

    value为字典

    key1: key1: val1 key2: val2

    value为列表

    key2:

    • list_val1

    • list_val2

  • 使用

    • 第一步:打开文件流 file = open(file=file_path,encoding='utf-8')

    • 第二步:使用yaml读取 yaml.load(stream=file,Loader=yaml.FullLoader)

    • 代码演示

      import yaml
      import os
      
      def handle_yaml(path,name):
          """
          :param path: 文件绝对路径
          :param name: .yaml文件名
          :return:
          """
          file_path = os.path.join(path,name)
          with open(file=file_path, encoding='utf-8') as file:
              vals = yaml.load(stream=file, Loader=yaml.FullLoader)
          return vals

来源:testingpai

继续阅读