一 ini文件
一、ini文件
.ini 文件是Initialization File的缩写,即初始化文件.用于存储项目全局配置变量,比如:接口地址 项目地址…输出文件路径.
二、ini文件编写格式
INI文件由节、键、值组成.
注释需前面加;
节
[section]
参数
(键=值)
name=value
;demo
[path]
log_path = D:\pycharm\study
report_path = D:\pycharm\
[database]
username = yxd
passwd = 123456
[userinfo2]
username = nemo
passwd = 123456
注意:节点不可以重复
三、Python对ini文件读取
使用configparser
import configparser
config=configparser.ConfigParser()
config.read("config.ini",encoding="utf-8")
#获取ini文件中所有的节点
sections = config.sections()
#获取ini文件中某个节点所有选项
options = config.options(section="database")
#获取某个节点下某个选项的选项值
value = config.get(section="database",option="username")
#获取某个节点下的所有选项及选项值,
values = config.items(section="database")
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zRVt58as-1668742353646)(C:\Users\yxd\AppData\Roaming\Typora\typora-user-images\image-20221117103136169.png)]
四、ini文件的编辑(写入或者修改)
ini文件编辑:
1、写入一个节点
2、写入选项及选项值
3、删除节点
4、删除选项及选项值
import configparser
config=configparser.ConfigParser()
file=open('config.ini',"a+")
#写入一个节点
new_section="userinfo1"
if new_section not in config.sections():
config.add_section("userinfo1")
# config.write(file)
# file.close()
# 给某个节点添加选项及选项值
config.set(section="userinfo1",option="username",value="nemo")
config.set(section="userinfo1",option="passwd",value="123456")
config.write(file)
file.close()
#with open("config.ini","w+") as file:
#config.write(file)
import configparser
config=configparser.ConfigParser()
config.read("config.ini",encoding="utf‐8")
#获取ini文件中所有的节点
sections = config.sections()
#删除节点
'''
del_section="userinfo1"
if del_section in sections:
config.remove_section(section=del_section)
with open("config.ini", "w+") as file:
config.write(file)
'''
# 删除选项及选项值
config.remove_option(section="userinfo2",option="passwd")
with open("config.ini", "w+") as file:
config.write(file)
二 yaml文件处理
一、什么yaml文件
YAML 是一种灵活的数据格式,支持注释、换行符、多行字符串、裸字符等在自动化过程中,我们很多地方都需要使用配置文件来储存数据比如测试环 境,数据库信息、账号信息、日志格式、日志报告名称等。
其中,yaml文件是最常用的配置文件类型之一,相比较ini,conf配置文件来说,它更加简洁,操作更加简单,同时还可以存放不同类型的数据。后缀名:.yaml .yml
二、yaml支持哪些数据类型
对象、
数组、
纯量: 字符串 数值 bool
三、YAML编写格式
大小写敏感
使用缩进表示层级关系
缩进用空格,相同的层级元素左对齐即可
#表示注释
注意:
1.字串不一定要用双引号标识;
2.在缩排中空白字符的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(不过不能使用TAB字符);
3.允许在文件中加入选择性的空行,以增加可读性;
4.在一个档案中,可同时包含多个文件,并用“——”分隔;
5.选择性的符号“...”可以用来表示档案结尾(在利用串流的通讯中,这非常有用,可以在不关闭串流的情况下,发送结束讯号)
1 字典格式(:号加空格)
username: cn
passwd: 123456
{‘username’: ‘cn’, ‘passwd’: 123456}
2列表格式(- 空格)
- 1
- 2
- 3
- 4
[1, 2, 3, 4]
3 数据组合
- sucesslogin:
username: yxd
passwd: 123456
- errorlogin:
- username: yxd
passwd: 123456
- username: dxy
passwd: 654321
[{‘sucesslogin’: {‘username’: ‘yxd’, ‘passwd’: 123456}}, {‘errorlogin’: [{‘username’: ‘yxd’, ‘passwd’: 123456}, {‘username’: ‘dxy’, ‘passwd’: 654321}]}]
四、yaml文件的读取
反序列化:从文件转换为Python对象
使用第三方库 PyYAML
import yaml
with open("yaml_demo.yaml","r",encoding="utf-8") as file:
data = yaml.load(stream=file,Loader=yaml.FullLoader)
print(data)
yaml文件用例读取的封装
#获取项目路径
import os
import yaml
def get_object_path():
return os.getcwd().split("yaml_util.py")[0]
#读取modules.yaml文件
def read_extract_file(node_name1,node_name2):
with open(get_object_path()+"\modules.yaml",encoding='utf-8') as f:
value=yaml.load(stream=f,Loader=yaml.FullLoader)
return value[node_name1], value[node_name1][node_name2]
if __name__ == '__main__':
print(
get_object_path(),
read_extract_file("base","base_gzh_url")
)
五、yaml写入数据
序列化(持久化)
将 纯量、对象、数组(Python对象) 转换 yaml文件
modules=["yxd","pytest","unittest","requests","requests"]
with open("modules.yaml","w+") as file:
yaml.dump(data=modules,stream=file,allow_unicode=True,encoding="utf‐8")