如何设置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
    

要回复问题请先登录注册