Python_ConfigParser_读取配置文件信息
ConfigParse简介
ConfigParser 在python中是用来解析配置文件的内置模块,直接导入使用
import configparser
使用该模块可以对配置文件进行增、读、改、删操作。
配置文件的文件类型可以为任意文本类型,比如:ini、txt、csv等。
配置文件中可以包含一个或多个区域(section),每个区域可以有多个参数(键=值)。
配置文件的格式如下:
[db] db_host = 127.0.0.1 db_port = 3306 db_user = root db_pass = 123456
[account]
username = admin
password = admin
说明:[ ]为section,用来区分不同的区域,section下面的key-value为配置内容。
ConfigParse使用
初始化对象并读取配置
import configparser # 创建实例对象 config = configparser.ConfigParser() # 读取配置文件 config.clear() # 读取前清除已读内容。若不清除,多次读取文件会出现非预期内容。 file_path = rf'config/config.ini' config.read(file_path, encoding="utf-8")
新增/修改配置
使用add_section(section)方法添加section
使用set(section, key, value)方法在指定的section下添加或修改key-value,若key不存在,则添加,若key已存在,则修改
# 新增section section = "login" # 新增section时,若section在配置文件已存在,则会抛错:already exists if not config.has_section(section): # 增加section config.add_section(section) # 增加key-value config.set(section, 'username', '1111') config.set(section, 'password', '2222') # 将配置写入文件 with open(file_path, 'w', encording="utf-8") as configfile: config.write(configfile)
读取配置
可以用读取字典的两种方法读取指定section中指定key的value
# 读取指定section中指定key的value # 第一种:使用get方法读取 username = config.get('login', 'username') password = config.get('login', 'password') print(username, password) null_section = config.get('login4', 'username', fallback=u'section 不存在') # 若section或option不存在,fallback返回后备值 null_option = config.get('login', 'NoneKey', fallback=u'key 不存在') print(null_section, ",", null_option) # 第二种:以[]的方式读取 username = config["login"]["username"] print(username)
除了能获取指定值,还可以用sections()方法读取所有section,读取结果为list
# 读取配置文件所有section sections = config.sections() print(sections)
还可以用options()方法读取所有key,读取结果为list
# 读取对应section下所有key keys = config.options('login') print(keys)
删除配置
# 删除指定section下的key,key不存不会抛错,但section不存在则抛错:No section, config.remove_option('login', 'username') # 删除指定section,section不存在不会抛错 config.remove_section('login') # 将操作同步到文件中 with open(file_path, 'w', encoding="utf-8") as configfile: config.write(configfile)
其他操作
# has_section()方法判断是否存在指定section,存在返回True,不存在返回False ret = config.has_section('login') print(ret) # has_option()方法判断指定section下,是否存在指定key,存在返回True,不存在返回False ret = config.has_option('login', 'username') print(ret)
ConfigParse拓展
ConfigParse没有将配置文件读取成dict类型的方法,需要处理转换下
# 暂时没有读取出dict格式的配置文件信息的方法,需要自己处理 # 创建实例对象 config = configparser.ConfigParser() # 读取配置文件 config.clear() # 读取前清除已读内容。若不清除,多次读取文件会出现非预期内容。 file_path = rf'config/config.ini' config.read(file_path, encoding="utf-8") # 转换配置 login_config = config['account'] login_config_dict = dict(login_config) print(login_config_dict)
读取结果