Python3基础-configparser模块
configparser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)。
[DEFAULT] minsdkversion = 15 targetsdkversion = 24 versionname = 1.0.0 server action = yes forwardx11 = yes [susu.me] user = susu [mysql] ip = 127.0.0.1 port = 8080
生成configparser文件实例
import configparser #配置文件 config = configparser.ConfigParser() #生成configparser配置文件,字典的形式 即config={} """第一种写法""" config["DEFAULT"] = {'minSdkVersion': '15', 'targetSdkVersion': '24', 'versionName': '1.0.0', 'server action':'yes' } """第二种写法""" config['susu.me'] = {} config['susu.me']['user'] = 'susu' """第三种写法""" config['mysql'] = {} topsecret = config['mysql'] topsecret['ip'] = '127.0.0.1' topsecret['port'] = '8080' config['DEFAULT']['ForwardX11'] = 'yes' """写入后缀为.ini的文件""" with open('example.ini', 'w') as configfile: config.write(configfile)
==================增删改查=======================
#读取configparser配置文件的实例
import configparser config = configparser.ConfigParser() config.read('example.ini',encoding='utf-8') #"""读取配置文件,python3可以不加encoding""" print("所有节点:",config.sections()) #"""sections(): 得到所有的section,并以列表的形式返回""" print("包含实例范围默认值的词典==>",config.defaults()) #"""defaults():返回一个包含实例范围默认值的词典""" #循环遍历 DEFAULT,取出key和对应的key值 dic = config['DEFAULT'] for item in config['DEFAULT']: print(item,dic[item]) print("susu.me节点下所有option的key,包括默认option==>",config.options("susu.me")) #"""和items(section, raw=False, vars=None):列出选项的名称和值""" print("输出元组,包括option的key和value",config.items('susu.me')) print("susu.me下user的值==>",config["susu.me"]["user"]) #方法一 dic_su = config['susu.me'] print("susu.me下user的值==>",dic_su['user']) #方法二 print("判断susu.me节点是否存在==>", 'susu.me' in config) #"""得到section中option的值,返回为string类型""" print("获取susu.me下user的值==>", config.get("susu.me", "user")) #getint(section,option) # """得到section中option的值,返回为int类型""" # getfloat(section,option) # """得到section中option的值,返回为float类型""" # getboolean(section, option) # """得到section中option的值,返回为boolean类型""" print("获取option值为数字的:port=", config.getint("mysql", "port"))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
所有节点: ['susu.me', 'mysql'] 包含实例范围默认值的词典==> OrderedDict([('minsdkversion', '15'), ('targetsdkversion', '24'), ('versionname', '1.0.0'), ('server action', 'yes'), ('forwardx11', 'yes')]) minsdkversion 15 targetsdkversion 24 versionname 1.0.0 server action yes forwardx11 yes susu.me节点下所有option的key,包括默认option==> ['user', 'minsdkversion', 'targetsdkversion', 'versionname', 'server action', 'forwardx11'] 输出元组,包括option的key和value [('minsdkversion', '15'), ('targetsdkversion', '24'), ('versionname', '1.0.0'), ('server action', 'yes'), ('forwardx11', 'yes'), ('user', 'susu')] susu.me下user的值==> susu susu.me下user的值==> susu 判断susu.me节点是否存在==> True 获取susu.me下user的值==> susu 获取option值为数字的:port= 8080
#删除配置文件(默认分组有参数时无法删除,但可以先删除下面的option,再删分组)
import configparser config = configparser.ConfigParser() config.read('example.ini') config.remove_section("susu.me") #"""移除section""" config.remove_option("mysql","port") #"""从指定section移除option""" config.remove_option("DEFAULT","forwardx11") #write(fileobject, space_around_delimiters=True) #"""将内容写入配置文件。""" config.write(open('example.ini','w'))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[DEFAULT] minsdkversion = 15 targetsdkversion = 24 versionname = 1.0.0 server action = yes [mysql] ip = 127.0.0.1
#新增修改配置文件
import configparser config = configparser.ConfigParser() config.read('example.ini') config.add_section("topsecret.server.com") #新增分组 config['topsecret.server.com']['host port'] = '50022' config.set("DEFAULT","versionname","1.1.0") """设置DEFAULT分组下versionname的值为1.1.0""" config.write(open('example.ini','w'))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[DEFAULT] minsdkversion = 15 targetsdkversion = 24 versionname = 1.1.0 server action = yes [mysql] ip = 127.0.0.1 [topsecret.server.com] host port = 50022
====================================================
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
config.read('example.ini',encoding="utf-8") """读取配置文件,python3可以不加encoding""" options(section) """sections(): 得到所有的section,并以列表的形式返回""" config.defaults() """defaults():返回一个包含实例范围默认值的词典""" config.add_section(section) """添加一个新的section""" config.has_section(section) """判断是否有section""" print(config.options(section)) """得到该section的所有option""" has_option(section, option) """判断如果section和option都存在则返回True否则False""" read_file(f, source=None) """读取配置文件内容,f必须是unicode""" read_string(string, source=’’) """从字符串解析配置数据""" read_dict(dictionary, source=’’) """从词典解析配置数据""" get(section, option, *, raw=False, vars=None[, fallback]) """得到section中option的值,返回为string类型""" getint(section,option) """得到section中option的值,返回为int类型""" getfloat(section,option) """得到section中option的值,返回为float类型""" getboolean(section, option) """得到section中option的值,返回为boolean类型""" items(raw=False, vars=None) """和items(section, raw=False, vars=None):列出选项的名称和值""" set(section, option, value) """对section中的option进行设置""" write(fileobject, space_around_delimiters=True) """将内容写入配置文件。""" remove_option(section, option) """从指定section移除option""" remove_section(section) """移除section""" optionxform(option) """将输入文件中,或客户端代码传递的option名转化成内部结构使用的形式。默认实现返回option的小写形式;""" readfp(fp, filename=None) """从文件fp中解析数据"""