ConfigParserSafeConfigParser有什么区别?为什么后者更安全呢?什么是“不安全”的?我知道ConfigParser继承了SafeConfigParser,它有什么不同?

最佳答案

SafeConfigParser实现了一个不同的set(section, option, value)方法,如果节不存在,将引发一个NoSectionError方法;如果TypeError不是字符串,将引发一个value方法。
这允许对解析器的行为进行更多的控制,文档中的example

try:
    config.set(section2, option, config.get(section1, option, 1))
except ConfigParser.NoSectionError:
    # Create non-existent section
    config.add_section(section2)
    opt_move(config, section1, section2, option)
else:
    config.remove_option(section1, option)

Fromdocumentation:它还支持插值。这意味着值可以包含引用同一节中其他值的格式字符串,或者包含特殊默认节中的值。初始化时可以提供其他默认值。
更新
我刚刚检查了SafeConfigParsersource code,即使ConfigParser也允许插值,SafeConfigParser提供了它的更新版本,它描述为魔法插值功能的更健全和更可预测的变体。
例如,在引用错误或“%”字符后出现语法错误时,它将引发一个InterpolationSyntaxError
更新2
这可能有助于精确地确定SafeConfigParserdocumentation。如果您想知道应该在python 2.7中使用哪个SafeConfigParserConfigParser,请使用第一个(除非您有非常具体的理由使用第二个)
通过执行以下操作,您还可以更轻松地将来过渡到python 3+,(has been renamed to ConfigParser in Python 3.2)。
from ConfigParser import SafeConfigParser as ConfigParser

关于python - python 2.7中的ConfigParser VS SafeConfigParser,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37937418/

10-11 07:38