Python模块系列:读取配置文件(configparser)

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
2ip属于options
3port=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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天然玩家

坚持才能做到极致

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值