有没有办法定义条件规则使用诱惑?在
下面是我的模式:
from voluptuous import Schema, All, Any
schema = Schema({
'resolution': All(str, Any('1920x1080', '1280x720')),
'bitrate': 20,
})
没关系,但现在我想验证基于分辨率值的比特率值。如果我有1920x1080
作为分辨率,那么我需要知道比特率是这些值中的一个:20、16、12、8;当它是{
我怎么能做到呢?有关于project's github page的信息,但我在那里找不到我的箱子。在
我解决类似问题的方法是
这将为您提供正确的验证,尽管错误消息可能会变得有点神秘。您可以编写任何一个更自定义的版本来改进错误消息。在
Voluptuous支持自定义验证函数[1],但它们只接收当前验证的值作为输入参数,而不接收任何其他以前验证过的值。这意味着尝试做一些类似
'bitrate': (lambda bitrate, resolution: Any(20, 16, 12, 8) if bitrate in (...) else Any (10, 8, 6, 4))
的事情很不幸是行不通的。在您可以尝试使用
'bitrate': Any(20, 16, 12, 10, 8, 6, 4)
,然后自己执行二次验证,以确保它与resolution
一致。在另一种方法可以是为完整的字典编写一个验证器函数,该函数将同时检查},不过这样你就可以编写一些正常情况下免费获得的代码。在
resolution
和{[1]https://github.com/alecthomas/voluptuous#validation-functions
相关问题 更多 >
编程相关推荐