python configparser用法,python config()
这篇文章主要介绍了pythonconfigparser中默认值的设定方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
目录
配置解析器中默认值的设定解决方案使用configparser的注意事项注意要点
configparser中默认值的设定
在做某一个项目时,在读配置文件中,当出现配置文件中没有对应项目时,如果要设置默认值,以前的做法是如下的:
尝试:
apple=config.get(第节,“苹果”)
除了NoSectionError,NoOptionError:
苹果=无
但当存在很多配置时,这种写法太糟糕
幸好,在Configparser.get()函数中有一个变量()的参数,可以自定义;注:只能用ConfigParser .configparserrrawconfigparser是不支持的
解决方案
1、定义函数:
类默认选项(字典):
def __init__(自身,配置,部分,* *千伏):
自我. config=config
自我. section=section
迪克特. init__(自身,* *千伏)
定义项目(自身):
_items=[]
对于self:中的选项
如果不是自我. config.has_option(self ._section,选项):
_items.append((option,self[option]))
else:
值_输入_配置=自身. config.get(self ._部分,选项)
_items.append((选项,值_输入_配置))
退货_项目
2、使用
定义读取配置(区段,位置):
config=configparserConfigParser()
配置.读取(位置)
apple=config.get(部分,苹果,
vars=DefaultOption(config,section,apple=None))
pear=config.get(section, pear ,
vars=DefaultOption(config,section,pear=None))
banana=config.get(section, banana ,
vars=DefaultOption(配置,节,香蕉=无))
归还苹果、梨、香蕉
这样就很好解决了读取配置文件时没有选择权时自动取默认值,而不是用加注的方式取默认值
此方案来之栈溢出
使用configparser的注意事项
以这个非常简单的典型配置文件为例:
[默认]
ServerAliveInterval=45
压缩=是
压缩级别=9
ForwardX11=是
[bitbucket.org]
用户=汞
[topsecret.server.com]
端口=50022
ForwardX11=否
1、配置解析器操作跟词典类似,在数据存取
方法基本一致
>> import configparser
2、默认配置项[DEFAULT]section 的默认参数会作用于其他Sections
3、数据类型
config parsers 不会猜测或自动分析识别config.ini参数的数据类型,都会按照字符串类型存储,如果需要读取为其他数据类型,需要自定义转换。
特殊bool值:对于常见的布尔值’yes’/‘no’, ‘on’/‘off’, ‘true’/‘false’ 和 ‘1’/‘0’,提供了getboolean()方法。
4、获取参数值方法 get()
使用get()方法获取每一参数项的配置值。
如果一般Sections 中参数在[DEFAULT]中也有设置,则get()到位[DEFAULT]中的参数值。
5、参数分隔符可以使用‘=’或‘:’(默认)
6、可以使用‘#’或‘;’(默认)添加备注或说明
[Simple Values]
7、写配置
常见做法:
config.write(open(example.ini, w))
合理做法:
with open(example.ini, w) as configfile:
注意要点
1、ConfigParser 在get 时会自动过滤掉‘#’或‘;‘注释的行(内容);
一般情况下我们手工会把配置中的暂时不需要的用‘#‘注释,问题在于,Configparser 在wirte的时候同file object行为一致,如果将注释’#‘的配置经过get后,再wirte到conf,那么’#‘的配置就会丢失。
那么就需要一个策略或规则,配置需不需要手工编辑 ?还是建立复杂的对原生文本的处理的东西,我建议是管住手,避免将一些重要的配置爆露给用户编辑,切记行内注释和Section内注释。
有一个相对简单的方法是:
对单独在一行的代码,你可以在读入前把"#", ";"换成其他字符如’@’,或‘^’(在其bat等其他语言中用的注释符易于理解),使用allow_no_value选项,这样注释会被当成配置保存下来,处理后你再把#, ";"换回来。
2、在ConfigParser write之后,配置文本如果有大写字母’PRODUCT’会变为小写字母’product’,并不影响配置的正确读写。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。