strutils¶
系统级工具和辅助函数。
- oslo_utils.strutils.bool_from_string(subject, strict=False, default=False)¶
将主题解释为布尔值。
主题可以是布尔值、字符串或整数。布尔类型的值将直接返回,否则主题将被转换为字符串。执行不区分大小写的匹配,因此匹配 ‘t’、’true’、’on’、’y’、’yes’ 或 ‘1’ 的字符串被视为 True,并且当 strict=False 时,任何其他值都将返回 ‘default’ 指定的值。
对于 JSON 解码的内容和配置文件解析非常有用。
如果 strict=True,未识别的值(包括 None)将引发 ValueError,这在解析从 API 调用传递的值时非常有用。产生 False 的字符串是 ‘f’、’false’、’off’、’n’、’no’ 或 ‘0’。
- oslo_utils.strutils.check_string_length(value, name=None, min_length=0, max_length=None)¶
检查指定字符串的长度。
- 参数:
value – 字符串的值
name – 字符串的名称
min_length – 字符串的最小长度
max_length – 字符串的最大长度
- 引发:
TypeError, ValueError – 对于任何无效输入。
在版本 3.7 中添加。
- oslo_utils.strutils.int_from_bool_as_string(subject)¶
将字符串解释为布尔值并返回 1 或 0。
任何字符串值在
(‘True’, ‘true’, ‘On’, ‘on’, ‘1’)
被解释为布尔值 True。
对于 JSON 解码的内容和配置文件解析非常有用
- oslo_utils.strutils.is_int_like(val)¶
检查值是否看起来像基数为 10 的整数。
- 参数:
val (string) – 要验证的值
- 返回值:
bool
在版本 1.1 中添加。
- oslo_utils.strutils.is_valid_boolstr(value)¶
检查提供的字符串是否是有效的布尔字符串。
- 参数:
value (string) – 要验证的值
- 返回值:
如果值为布尔字符串,则为 true,否则为 false
在版本 3.17 中添加。
- oslo_utils.strutils.mask_dict_password(dictionary, secret='***')¶
递归地用 secret 替换字典中的密码。
- 参数:
dictionary – 包含机密信息的字典。
secret – 用于替换机密信息的值。
- 返回值:
包含字符串替换的字典。
字典(可能包含嵌套字典)包含不应公开的信息(例如密码),此函数有助于检测并将其替换为提供的 ‘secret’(或 *** 如果未提供)。
执行以下三种情况之一的替换
如果键被认为是表明机密信息的,则相应的值将被替换为提供的 secret(或 *** 如果未提供)。
如果字典中的值为字符串,则使用
mask_password()函数对其进行屏蔽。最后,如果值是字典,此函数将递归地屏蔽该字典。
例如
>>> mask_dict_password({'password': 'd81juxmEW_', >>> 'user': 'admin', >>> 'home-dir': '/home/admin'}, >>> '???') {'password': '???', 'user': 'admin', 'home-dir': '/home/admin'}
例如(使用 mask_password() 屏蔽值)
>>> mask_dict_password({'password': '--password d81juxmEW_', >>> 'user': 'admin', >>> 'home-dir': '/home/admin'}, >>> '???') {'password': '--password ???', 'user': 'admin', 'home-dir': '/home/admin'}
例如(屏蔽嵌套字典)
>>> mask_dict_password({"nested": {'password': 'd81juxmEW_', >>> 'user': 'admin', >>> 'home': '/home/admin'}}, >>> '???') {"nested": {'password': '???', 'user': 'admin', 'home': '/home/admin'}}
在版本 3.4 中添加。
- oslo_utils.strutils.mask_password(message, secret='***')¶
用 secret 替换消息中的密码。
- 参数:
message – 包含安全信息的字符串。
secret – 用于替换密码的值。
- 返回值:
屏蔽了密码字段的 unicode 值。
例如
>>> mask_password("'adminPass' : 'aaaaa'") "'adminPass' : '***'" >>> mask_password("'admin_pass' : 'aaaaa'") "'admin_pass' : '***'" >>> mask_password('"password" : "aaaaa"') '"password" : "***"' >>> mask_password("'original_password' : 'aaaaa'") "'original_password' : '***'"
在版本 0.2 中添加。
在版本 1.1 中更改:也替换
'auth_token'、'new_pass'和'auth_password'键。在版本 1.1.1 中更改:也替换
'secret_uuid'键。在版本 1.5 中更改:也替换
'sys_pswd'键。在版本 2.6 中更改:也替换
'token'键。在版本 2.7 中更改:也替换
'secret'键。在版本 3.4 中更改:也替换
'configdrive'键。在版本 3.8 中更改:也替换
'CHAPPASSWORD'键。
- oslo_utils.strutils.split_by_commas(value)¶
根据 api-wg 分割逗号和引号。
- 参数:
value – 要分割的值
在版本 3.17 中添加。
- oslo_utils.strutils.split_path(path, minsegs=1, maxsegs=None, rest_with_last=False)¶
验证并分割给定的 HTTP 请求路径。
示例:
['a'] = _split_path('/a') ['a', None] = _split_path('/a', 1, 2) ['a', 'c'] = _split_path('/a/c', 1, 2) ['a', 'c', 'o/r'] = _split_path('/a/c/o/r', 1, 3, True)
- 参数:
path – 要分割的 HTTP 请求路径
minsegs – 要提取的最小段数
maxsegs – 要提取的最大段数
rest_with_last – 如果为 True,则尾部数据将作为最后一个段的一部分返回。如果为 False,并且存在尾部数据,则引发 ValueError。
- 返回值:
长度为 maxsegs 的段列表(不存在的段将返回 None)
- 引发:
如果给定的路径无效,则引发 ValueError
在版本 3.11 中添加。
- oslo_utils.strutils.string_to_bytes(text, unit_system='IEC', return_int=False)¶
将字符串转换为字节的浮点数表示。
IEC / 混合的单位支持
Kb(it), Kib(it), Mb(it), Mib(it), Gb(it), Gib(it), Tb(it), Tib(it), Pb(it), Pib(it), Eb(it), Eib(it), Zb(it), Zib(it), Yb(it), Yib(it), Rb(it), Rib(it), Qb(it), Qib(it) KB, KiB, MB, MiB, GB, GiB, TB, TiB, PB, PiB, EB, EiB, ZB, ZiB, YB, YiB, RB, RiB, QB, QiB
SI 的单位支持
kb(it), Mb(it), Gb(it), Tb(it), Pb(it), Eb(it), Zb(it), Yb(it), Rb(it), Qb(it) kB, MB, GB, TB, PB, EB, ZB, YB, RB, QB
SI 单位解释为 10 的幂(例如 1kb = 1000b)。请注意,SI 单位系统不支持大写字母 ‘K’
IEC 单位解释为 2 的幂(例如 1MiB = 1MB = 1024b)
混合单位将 “i” 解释为 IEC,不带 “i” 解释为 SI(例如 1kb = 1000b,1kib == 1024b)。此外,混合单位将 ‘K’ 解释为 10 的幂。这种模式对于新代码来说并不是特别有用,但可以帮助与 GNU parted 等解析器兼容。
- 参数:
text – 字节大小转换的字符串输入。
unit_system – 字节大小转换的单位系统。
return_int – 如果为 True,则返回字节的整数表示形式。(默认:十进制)
- 返回值:
文本的字节数值表示形式。
- 引发:
ValueError – 如果文本具有无效值。
- oslo_utils.strutils.to_slug(value, incoming=None, errors='strict')¶
规范化字符串。
转换为小写,删除非单词字符,并将空格转换为连字符。
受 Django 的 slugify 过滤器启发。
- 参数:
value – 要 slugify 的文本
incoming – 文本的当前编码
errors – 错误处理策略。有关有效值,请参阅 https://docs.pythonlang.cn/2/library/codecs.html
- 返回值:
value 的 slugified unicode 表示形式
- 引发:
TypeError – 如果文本不是 str 的实例
- oslo_utils.strutils.validate_integer(value, name, min_value=None, max_value=None)¶
确保值是有效的整数,可能在范围内。
- 参数:
value – 整数的值
name – 整数的名称
min_value – 整数的最小值
max_value – 整数的最大值
- 返回值:
整数
- 引发:
如果值是无效的整数,则引发 ValueError
在版本 3.33 中添加。