如何解决如何设置SafeConfigParser的默认值?
| 我有一个配置文件,如下所示:[job]
mailto=bob
logFile=blahDeBlah.txt
我想使用SafeConfigParser
读取选项:
values = {}
config = ConfigParser.SafeConfigParser()
try:
config.read(configFile)
jobSection = \'job\'
values[\'mailto\'] = config.get( jobSection,\'mailto\' )
values[\'logFile\'] = config.get( jobSection,\'logFile\' )
# it is not there
values[\'nothingThere\'] = config.get( jobSection,\'nothingThere\' )
.... # rest of code
最后一行当然会引发错误。如何为config.get()
方法指定默认值?
再说一次,如果我有一个如下的选项文件:
[job1]
mailto=bob
logFile=blahDeBlah.txt
[job2]
mailto=bob
logFile=blahDeBlah.txt
似乎没有办法为job1
指定默认选项,这与job2
部分中的默认选项不同。
解决方法
对构造函数使用
defaults
参数:
# class ConfigParser.SafeConfigParser([defaults[,dict_type]])
#
config = ConfigParser.SafeConfigParser({\'nothingThere\': \'lalalalala\'})
...
...
# If the job section has no \"nothingThere\",\"lalalalala\" will be returned
#
config.get(jobSection,\'nothingThere\')
,您还可以使用默认的\“。ini \”文件,并在实际配置文件之前读取它。
default.ini:
[job1]
mailto=jack
logfile=default.log
[job2]
mailto=john
logfile=default.log
config.ini:
[job1]
mailto=sparrow
logfile=blah.log
[job2]
logfile=blah2.log
解析:
config = ConfigParser.SafeConfigParser()
config.read(\'default.ini\')
config.read(\'config.ini\')
print config.get(\'job1\',\'mailto\')
# -> sparrow (from config.ini)
print config.get(\'job1\',\'logfile\')
# -> blah.log (from config.ini)
print config.get(\'job2\',\'mailto\')
# -> john (from default.ini)
print config.get(\'job2\',\'logfile\')
# -> blah2.log (from config.ini)
,您可以使用[DEFAULT]部分为未在其他任何部分中定义的属性设置默认值。
例如。
[DEFAULT]
checkout_root: /data/workspace
[pingpong]
name: Ping Pong App
checkout_root: /home/pingpong
src: %(checkout_root)s/src
[dingdong]
name: Ding Dong App
src: %(checkout_root)s/dingdong_src
对于ding ding应用,src
的值为/data/workspace/dingdong_src
,在Python 3中,您可以为get()方法提供一个后备值,如下所示:
values[\'nothingThere\'] = config.get(\'job\',\'nothingThere\',fallback=0)
print(values[\'nothingThere\'])
# -> 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。