首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Voluptuous,一个配置验证的Python库!

关注我们

Voluptuous:让你的配置文件不再“任性”

听说过 Voluptuous 吗?没听过?那你可得好好听我唠叨唠叨了。这玩意儿可是个处理配置文件的神器啊!它是一个 Python 库,专门用来验证和格式化复杂的数据结构。说白了,就是帮你检查配置文件是不是写对了,数据格式对不对头。

PART01

为啥要用 Voluptuous?

你说你写代码的时候从来不出错?骗谁呢!就算你是代码届的兰陵王,也难免有打瞌睡的时候。配置文件里少个逗号,多个空格,这种低级错误谁都会犯。用了 Voluptuous,它就像个小学老师,帮你把作业检查得明明白白的。

看到没?这就是 Voluptuous 的基本用法。它定义了一个 schema,然后用这个 schema 去验证数据。如果数据不符合要求,它就会抛出一个异常,告诉你哪儿出问题了。

PART02

Schema 是啥玩意儿?

Schema 就是你定义的一个数据结构模板。它告诉 Voluptuous 你希望你的数据长啥样。比如上面的例子,我们定义了一个字典,里面必须有一个 ‘name’ 键,值是字符串,而且长度不能为0。’age’ 是可选的,但如果有的话必须是 0 到 120 之间的整数。’email’ 也是可选的,但必须是字符串。

温馨提示:Schema 里的键默认是可选的,如果你想让某个键必须存在,就得用Required()包起来。

PART03

验证数据类型

Voluptuous 支持各种 Python 内置的数据类型,比如 str、int、float、bool 等。你还可以用All()组合多个验证条件:

from voluptuous import Schema, All, Range, Length

schema = Schema({

'name': All(str, Length(min=2, max=50)),

'score': All(float, Range(min=0, max=100))

})

data = {'name': '张三', 'score': 95.5}

schema(data) # 验证通过

PART04

自定义验证函数

有时候,内置的验证方法可能满足不了你的需求。没关系,你可以自己写个函数来验证:

from voluptuous import Schema, Invalid

def is_even(value):

if value % 2 != 0:

raise Invalid('必须是偶数')

return value

schema = Schema({

'even_number': is_even

})

schema({'even_number': 4}) # 验证通过

schema({'even_number': 3}) # 抛出异常

PART05

嵌套结构

配置文件往往是层层嵌套的,Voluptuous 也能轻松处理:

from voluptuous import Schema, Required

schema = Schema({

'user': {

Required('name'): str,

'address': {

'city': str,

'zip': str

}

}

})

data = {

'user': {

'name': '李四',

'address': {

'city': '北京',

'zip': '100000'

}

}

}

schema(data) # 验证通过

PART06

列表验证

对于列表,Voluptuous 也有招儿:

from voluptuous import Schema, All, Length, Range

schema = Schema([All(int, Range(min=0, max=100))])

schema([1, 50, 99]) # 验证通过

schema([1, 101, 99]) # 抛出异常

这个例子验证了一个列表,要求列表里的每个元素都是 0 到 100 之间的整数。

PART07

异常处理

当验证失败时,Voluptuous 会抛出一个Invalid异常。你可以捕获这个异常来处理验证失败的情况:

from voluptuous import Schema, Invalid

schema = Schema(int)

try:

schema('not an integer')

except Invalid as e:

print(f“验证失败:{e}”)

好了,说了这么多,你应该对 Voluptuous 有个大概的了解了吧?它就像是你的配置文件的保镖,帮你挡住那些不守规矩的数据。用好了它,你的代码就能少很多莫名其妙的 bug。

不过话说回来,用 Voluptuous 也不是万能的。它只能帮你验证数据的结构和基本类型,具体的业务逻辑还是得你自己来写。该调试的时候还是得好好调试,别想偷懒啊!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O8pFRYzeRywm1L46gQc9kRXQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券