1 引入包
引入configparser,由于ConfigParser包被configparser代替,因此,引用时注意。
import configparser
2 配置文件config.ini
配置文件默认使用字符串填充数据。
[db_dev]
ip = 127.0.0.1
port = 3306
db_name = user
user_name = root
user_password = 123456
[db_test]
ip = 88.88.99.99
port = 3306
db_name = user
user_name = root
user_password = 123456
配置文件解析:
序号 | 标志 | 描述 |
---|---|---|
1 | [db_dev] | 属于sections |
2 | ip | 属于options |
3 | port=3306 | 属于items |
3 读取配置文件
3.1 获取某个属性值
获取某个属性的值,如获取ip值,直接使用方法get(),参数为:section,option,获取ip的值样例为:get(“db_dev”, “ip”)。
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@Description: 测试样例
@Date :2021/02/07 10:27:06
@Author :xindaqi
@version :1.0
'''
import configparser
def read_config(config_path):
"""
读取配置文件信息,获取某个标签值
Parameters
---------
config_path : string
配置文件
Returns :
-------
ip : string
数据库ip
"""
config_hanlder = configparser.ConfigParser()
config_hanlder.read(config_path)
ip = config_hanlder.get("db_dev", "ip")
return ip
if __name__ == "__main__":
config_path = "config.ini"
ip = read_config(config_path)
print("ip:{}".format(ip))
- 结果
ip:127.0.0.1
3.2 读取模块sections
读取配置文件的section,即所有的[],本文为:[db_dev],[db_test]
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@Description: 测试样例
@Date :2021/02/07 10:27:06
@Author :xindaqi
@version :1.0
'''
import configparser
def read_config_sections(config_path):
"""
读取配置文件获取所有模块
Parameters
---------
config_path : string
配置文件路径
Returns :
-------
@param : list
配置文件模块列表
"""
config_hanlder = configparser.ConfigParser()
config_hanlder.read(config_path)
sections = config_hanlder.sections()
return sections
if __name__ == "__main__":
config_path = "config.ini"
sections = read_config_sections(config_path)
print("sections:{}".format(sections))
- 结果
sections:['db_dev', 'db_test']
3.3 获取模块中的属性
即获取options,模块sections中所有键名称。
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@Description: 测试样例
@Date :2021/02/07 10:27:06
@Author :xindaqi
@version :1.0
'''
import configparser
def read_config_options(config_path):
"""
读取配置文件,遍历读取某个section中所有属性
Parameters
---------
@config_path : string
配置文件路径
Returns :
-------
@param : list
配置文件模块中属性列表
"""
config_hanlder = configparser.ConfigParser()
config_hanlder.read(config_path)
sections = config_hanlder.sections()
key_li = [config_hanlder.options(x) for x in sections]
return key_li
if __name__ == "__main__":
config_path = "config.ini"
key_li = read_config_options(config_path)
print("key list: {}".format(key_li))
- 结果
key list: [['ip', 'port', 'db_name', 'user_name', 'user_password'],
['ip', 'port', 'db_name', 'user_name', 'user_password']]
3.4 获取模块下所有属性键值
即获取items,某个section中的键值。
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@Description: 测试样例
@Date :2021/02/07 10:27:06
@Author :xindaqi
@version :1.0
'''
import configparser
def read_config_items(config_path):
"""
读取配置文件,遍历读取某个section中所有属性
Parameters
---------
config_path : string
配置文件路径
Returns :
-------
@param : list
键值集合列表
"""
config_hanlder = configparser.ConfigParser()
config_hanlder.read(config_path)
sections = config_hanlder.sections()
kv_set_li = [config_hanlder.items(x) for x in sections]
return kv_set_li
if __name__ == "__main__":
config_path = "config.ini"
kv_set_li = read_config_items(config_path)
print("key value list: {}".format(kv_set_li))
dict_kv = [dict(x) for x in kv_set_li]
print("dict key value: {}".format(dict_kv))
- 结果
key value list: [[('ip', '127.0.0.1'), ('port', '3306'),
('db_name', 'user'),
('user_name', 'root'),
('user_password', '123456')],
[('ip', '88.88.99.99'), ('port', '3306'),
('db_name', 'user'),
('user_name', 'root'),
('user_password', '123456')]]
dict key value: [{'ip': '127.0.0.1', 'port': '3306', 'db_name': 'user', 'user_name': 'root', 'user_password': '123456'},
{'ip': '88.88.99.99', 'port': '3306', 'db_name': 'user', 'user_name': 'root', 'user_password': '123456'}]
4 小结
- 读取config.ini配置文件使用configparser包,替换ConfigParser
- 获取某个属性值,使用get(section, option)方法
- 获取int类型数据,使用getint(section, option)方法
【参考文献】
[1]https://www.cnblogs.com/weizhideweilai/p/9515046.html
[2]https://blog.csdn.net/weixin_41407477/article/details/86013515