python模块之configparser
2018-01-12 11:46
393 查看
configparser
configParser 模块用于操作配置文件注:Parser汉译为“解析”之意。
配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值或者键:值)。
为了更好的理解本文,我们先了解一下配置文件的组成及命名:配置文件(INI文件)由节(section)、键、值组成。
样例配置文件config.ini
[book] title = ConfigParser模块教程 time = 2018-01-12 11:47:37 [size] size = 1024 [other] blog = http://blog.51cto.com/kexiaoke[/code] 在config.ini里面出现了三个节(section),分别是book,size,other
book里面有两个键值对,size和other里面各一个。读取配置文件
-read(filename) 直接读取ini文件内容
-sections() 得到所有的section,并以列表的形式返回
-options(section) 得到该section的所有option
-items(section) 得到该section的所有键值对
-get(section,option) 得到section中option的值,返回为string类型
-getint(section,option) 得到section中option的值,返回为int类型增加或修改配置
-add_section(section) 添加一个新的section
-set( section, option, value) 对section中的option进行设置
需要调用write将内容写入配置文件。获取config.ini配置示例
read_config.py
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'xiaoke' __time__ = '2018-01-12 11:17' PROJECT_NAME = 'test_projtcts' #导入configparser模块 import configparser #生成conf对象 conf= configparser.ConfigParser() #加载config.ini文件内容 conf.read('config.ini') #读取配置文件里所有的Section print('读取配置文件里所有的Section') print(conf.sections()) #打印出book这个section下包含key print('打印出book这个section下包含key') print(conf.options('book')) #打印test1这个section下所有的key及对应的values print('打印book这个section下所有的key及对应的values') print(conf.items("book")) #指定section,option读取值 print('获取book这section个title内容') print(conf.get('book','title'))执行结果如下
读取配置文件里所有的Section ['book', 'size', 'other'] 打印出book这个section下包含key ['title', 'time'] 打印book这个section下所有的key及对应的values [('title', 'ConfigParser模块教程'), ('time', '2018-01-12 11:47:37')] 获取book这section个title内容 ConfigParser模块教程在config.ini文件增加一个section
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'xiaoke' __time__ = '2018-01-12 13:54' PROJECT_NAME = 'test_projtcts' #导入configparser模块 import configparser #生成conf对象 conf= configparser.ConfigParser() #加载config.ini文件内容 conf.read('config.ini') #增加一个section conf.add_section('add_test') conf.set('add_test','name','xiaoke') conf.set('add_test','age','25') #添加完毕,必须调用write方法写入 conf.write(open('config.ini','w')) #打印刚添加的内容 print(conf.items('add_test'))执行完成后会在配置文件如下的内容
conf.set('section','key','value')[add_test] name = xiaoke age = 25修改section的内容
#导入configparser模块 import configparser #生成conf对象 conf= configparser.ConfigParser() #加载config.ini文件内容 conf.read('config.ini') #打印修改之前的值 print(conf.items('add_test')) #修改add_test section的age键 conf.set('add_test','age','27') #修改完毕,必须调用write方法写入 conf.write(open('config.ini','w')) #打印修改之后的值 print(conf.items('add_test'))------------------------结果如下-----------------
修改之前的值
[('name', 'xiaoke'), ('age', '28')]
修改之后的值
[('name', 'xiaoke'), ('age', '27')]删除section或者option
删除section
config.remove_section("add_test") conf.write(open('config.ini','w'))删除option
conf.remove_option('add_test','age') conf.write(open('config.ini','w'))注意要点
注意要点:
1.ConfigParser 在get 时会自动过滤掉‘#’或‘;’注释的行(内容);
一般情况下我们手工会把配置中的暂时不需要的用‘#’注释,问题在于,Configparser 在wirte的时候同file object行为一致,如果将注释’#’的配置经过get后,再wirte到conf,那么’#’的配置就会丢失。
那么就需要一个策略或规则,配置需不需要手工编辑 ?还是建立复杂的对原生文本的处理的东西,我建议是管住手,避免将一些重要的配置爆露给用户编辑,切记行内注释和Section内注释。
有一个相对简单的方法是: 对单独在一行的代码,你可以在读入前把”#”, “;”换成其他字符如’@’,或‘^’(在其bat等其他语言中用的注释符易于理解),使用allow_no_value选项,这样注释会被当成配置保存下来,处理后你再把“#”, “;”换回来。
2.在ConfigParser write之后,配置文本如果有大写字母’PRODUCT’会变为小写字母’product’,并不影响配置的正确读写。
相关文章推荐
- 深入探讨Python ConfigParser模块正确应用方式
- python ConfigParser模块详解
- Python模块:配置文件解析器configparser
- python--configparser模块,subprocess模块
- 嵌入式 python之ConfigParser配置解析模块
- Python模块学习之ConfigParser读写配置信息
- Python自动化测试 -ConfigParser模块读写配置文件
- Python使用自带的ConfigParser模块读写ini配置文件
- python模块:configparser
- python-ConfigParser模块学习
- python中用Configparser模块解析配置文件
- python ConfigParser模块 配置文件解析
- Python的配置模块:configparser
- python3之xml&ConfigParser&hashlib&Subprocess&logging模块
- python模块之ConfigParser: 用python解析配置文件[zt]
- Python模块:configparser、hashlib、(subprocess)
- Python 解析配置模块之ConfigParser详解
- Python 解析配置模块之ConfigParser详解
- Python ConfigParser模块(转载)