在接口自动化中应用较多
创建时,直接文件名.ini,即可创建
主要有两个概念。
section:可以理解成一个集合,来放option的
option:就是ini文件存放的数据
如下: server为section,用[]定义,py的语法格式不适用,=号不需要用空格隔开,字符串也不需要加引号
[server] base_url=http://api.keyou.site:8000 auth_type=lemonban.v3 [log] name=py30 level=INFO file_ok=True file_name=py30.log是python自带的模块,使用时直接引入即可
from configparser import ConfigParser conf = ConfigParser() # 实例化一个ConfigParser对象 conf.read("cekai.ini", encoding="utf-8") # 其中第一个参数为cekai.ini,实际上是配置文件的路径,在项目中最好使用os模块,读取当前文件的路径。 注意:read方法,只是把.ini文件中的所有数据加载到内存中,如果要使用,要自己去读取出来。conf.getfloat("section","option") -- 读取出来为浮点数。float
conf.getint("section","option") -- 读取出来为int
获取全部section:s = conf.sections() ,以列表的形式存储,可以用遍历 基本不用
获取指定section下的所有option: o = conf.options("log") 拿到log下全部的option 也是list存储 基本不用
from configparser import ConfigParser # 引入ConfigParser conf = ConfigParser() # 实例化类,就是创建对象 conf.read('nmb.ini', encoding="utf-8") # 将文件加载到内存中 value = conf.get("log", "name") # get方法,获取到指定section中指定option的值 print(value) conf.set("log", "name", "猪猪") # 修改指定section中的option的值,但是只是在内存中修改,本地文件还是没有变化的
conf.add_section("new_section") # 添加新的section, conf.write(open("nmb.ini", "w", encoding="utf-8")) # 凡是要修改配置文件的操作,都需要这一步,来写入到本地文件中,w代表直接覆盖写入
ini文件读取封装:
from configparser import ConfigParser import os from Common.handle_path import conf_dir class HandleConfig(ConfigParser): def __init__(self, file_path): super().__init__() self.read(file_path, encoding="utf-8") file_path = os.path.join(conf_dir, "cekai.ini") conf = HandleConfig(file_path)1:区分大小写 2:使用缩进标识层级关系 3:使用时不允许Tab键,只允许空格 4: 缩进的空格数码不重要,只要相同层级的元素左侧对齐即可 5:#号表示注释
对象:即字典,键值对的形式: name: xiaozhou log: name: py30 level: INFO 注意,冒号后面的空一格不能省略
数组:就是列表,数组前要有-符号,符号与值之间要有一个空格,不可省略 color: - red - blue - green
纯量:单个的,不能再分的值,基本就是不可变的数据类型(字符串,布尔值,整数,浮点数,时间,日期,null) n1: 8 n2: 8.8 n3: true n4: false n5: 'vivi' 注意冒号后面的空一格不可省略
温馨提示:刚开始新手配置,如果想要检查格式配置的对不对,就去在线校验:http://www.bejson.com/validators/yaml/
读取操作:要下载pyyaml
import yaml
with open("nmb.yaml",encoding="utf-8") as fs: data = yaml.load(fs,yaml.FullLoader) print(data) for key,value in data.items(): print(key) print(value)