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リーダー、初めてのポスター:-)