我正在使用 ConfigObj 和 Validator 来解析 python 中的配置文件。虽然我非常喜欢这个工具,但我在使用 configSpec 文件进行验证时遇到了麻烦。我正在使用 option() configSpec 类型,该类型强制从受控词汇表中选择值:
output_mode = option("Verbose", "Terse", "Silent")
我希望我的代码知道用户何时输入不在 CV 中的选项。根据我的喜好,Validator 似乎只说明了哪个配置键验证失败,但没有说明失败的原因:
from configobj import ConfigObj, flatten_errors
from validate import Validator
config = ConfigObj('config.ini', configspec='configspec.ini')
validator = Validator()
results = config.validate(validator)
if results != True:
for (section_list, key, _) in flatten_errors(config, results):
if key is not None:
print 'The "%s" key in the section "%s" failed validation' % (key, ', '.join(section_list))
else:
print 'The following section was missing:%s ' % ', '.join(section_list)
该代码片段有效,但密钥验证失败的原因有很多,从不在整数范围内到不在 CV 中。我不想询问密钥名称并根据该密钥的失败情况引发不同类型的异常。是否有更简洁的方法来处理特定类型的验证错误?
长时间的stackoverflow阅读器,第一次海报:-)