Python ConfigParser:检查选项是否存在

时间:2012-07-17 17:43:23

标签: python configparser

我正在使用Python的ConfigParser来创建配置文件。我想检查某个部分是否定义了特定选项,如果有,则获取该值。如果没有定义选项,我只想继续没有任何特殊行为。似乎有两种方法可以做到这一点。

if config.has_option('Options', 'myoption'):
    OPTION = config.get('Options', 'myoption')

或者:

try:
    OPTION = config.get('Options', 'myoption')
except ConfigParser.NoOptionError:
    pass

一种方法优于另一种吗? if涉及较少的行,但我偶尔会读到try / except在许多情况下被认为更加pythonic。

1 个答案:

答案 0 :(得分:28)

try / except和if-condition之间的选择是模糊的。

  1. 如果您认为异常非常罕见,请使用try / except,因为它更接近于思考
  2. 相反,缺少配置项的“预期”异常是正常控制流程的一部分,代码应反映出来。
  3. 没有明显优越的选择,但听起来你有一个案例(2)所以我选择if / then。这完全忽略了易于要求宽恕而不是许可的方面以及结构的相对效率。