Python_16 配置文件与封装
一、查缺补漏
1. ctrl + alt +L 规范格式
2. Python 使用 ini&yaml 配置文件
http://testingpai.com/article/1621245437855
3. 如何进行SDK的测试
https://www.cnblogs.com/winson-317/p/9896645.html
4. Shift+alt+E 执行选中的代码
二、配置文件分类 三种配置文件效率一致,py最方便
1. 硬编码与软编码
a. 软编码:参数化整个项目配置,通过参数实现比如设置name为参数,调用时赋值
b. 硬编码:写死的编码方式,比如说里name=alisa就是硬编码,要修改alisa要改代码
2. xxx.ini:django项目部署用uwsgi,配置文件为ini文件,有时java开发也会用到
3. xxx.yaml:java用的多,dockercompose会用到,docker和k8s都用到
4. xxx.py:python文件,django项目多是py文件 如:settings.py
5. 使用场景:生产环境和测试环境的区别:ip不一样、数据库地址不一样、密码不一样、账号不一样
将配置文件中的ip等数据更改就可以切换生产环境和测试环境~
三、xxx.ini 文件
1. 写法:在项目下点击New->File->创建一个后缀为.ini的文件
[section] -- 可以自己定义
key1=val1
key2=val2
key3=val3
相似于
test_dict={"key1":"val1","key2":"val2","key3":"val3"}
print(test_dict["key1"])
test_conf={"testpy1":{"key1":"val1","key2":"val2","key3":"val3"},
"testpy2":{"key1":"val1","key2":"val2","key3":"val3"}}
2. 特点:
a. section不能重复
b. 同一个section中的key不能重复
c. 等号两边不能有空格
d. 获取值默认是字符串类型
e. 添加、删除、修改只是对缓存区域的改变,不会真实修改文件
3. 常用方法:
a. 获取所有的sections 两种方式
赋值对象1= conf.sections() 不需要list强制类型转换
赋值对象2 = conf.keys() 结果会多一个'DEFAULT' 需要list强制类型转换
b. 获取指定sections下所有的options(key)
test_options = conf.options(section='想要查询的section部分') 获取key
test_options=conf.items(section='想要查询的section部分') 获取key(options),value
c. 直接获取key(options)的value
i. 默认获取到的是str【常用】
value = conf.get(section='想要查询的section部分', option='想查询val的key值')
ii. 获取布尔值
value2=conf.getboolean(section='想要查询的section部分', option='想查询val为True/False的key值')
iii. 获取数值(int类型),不能使用小数,只能写整数
value3 = conf.getint(section='想要查询的section部分', option='想查询val为int类型的key值')
iv. 获取数值(float类型)
value4 = conf.getfloat(section='想要查询的section部分', option='想查询val为float类型的key值')
4. 其他操作
a. 添加 sections(操作在内存中,不会保存到文件里) conf.add_section('your_section')
b. 添加 key,val(操作在内存中,不会保存到文件里) conf.set('your_section','key22','val22')
c. 删除(操作在内存中,不会保存到文件里) conf.remove_option('your_section', "key1") 对写入的文档有效
d. 写入文件:将你内存你的数据全部写入文件进行覆盖,conf 初始化的时候读取的是所有对象
conf.write(fp=open(file=文件路径,mode='w'))
四、xxx.yaml 文件
1. 新建yaml文件 :在项目下点击New->File->创建一个后缀为.yaml的文件
2. 写法:如果是写字典类型就只能是字典类型,如果写列表类型就只能是列表类型
key1: val1
key2:
- test01 ---列表
- test02
- test03
3. 数据类型只支持一种,写多种只能嵌套在val里类似于-> {key1:val1,key2:[test01, test02, test03]}
4. 特点:
a. 使用缩进来表示层级关系
b. key值要和val值保持一个空格,杠和列表中间也要一个空格
c. 大小写敏感
d. 同一个层级的要对齐
e. 只能用空格,不要用tab
f. 一个yaml对外只支持一种数据类型
g. yanl文件是一次性读取,不支持连续读取
h. 读取出来就是python对象,可以直接取值使用
5. 常用方法:
a. open(file=file_path,encoding="utf-8") 打开文件 路径可以拼接为绝对路径,但使用相对路径也可以
b. value = yaml.load(stream=file,Loader=yaml.FullLoader) 固定搭配,读取全部文件内容
另一种方法是open打开但是需要手动关闭
6. 安装yaml pip install pyyaml
五、封装
1. ini的封装
2. yaml的封装
a. 用函数封装
b. 用类封装
六、一些重要的点
1. 老师的博客里面有很多知识,去看看
2. 项目中使用的常量,我们把它收集在一个文件中,这个就是配置文件,配置文件在项目中是非常有必要的,它避免了项目中文件对常量的分散使用,让常量可以一致修改,避免造成修改不全面的问题
3. 使用open 打开文件需要手动关闭,使用with open的时候自动关闭所以不需要手动close
本文来自博客园,作者:Alisa-sweet,转载请注明原文链接:https://www.cnblogs.com/Alisa-sweet/p/17368457.html