为何Python3.6正常运行的代码,Ansible-Sanity会报格式字符串自动编号错误?
问题原因说明
- 该报错属于Ansible代码规范校验的限制,和Python 3.6本身的语法支持无关:Ansible要求所有
str.format()的占位符必须显式指定字段编号或字段名,禁止使用Python 2.7及以上版本支持的自动字段编号占位符语法。 - 你代码中的
'{:04x}'就是自动编号的占位符,Python解释器运行时会自动为它分配顺序下标0,匹配format()传入的第一个参数,但是Ansible-Sanity的校验规则不允许这种隐式写法,因此抛出ansible-format-automatic-specification错误。
修复方案
将占位符修改为显式指定下标即可,修改后代码如下:
def findhex(lid): lidHex = '{0:04x}'.format(int(lid))
修改后的逻辑和原有代码完全一致,同时可以通过Ansible-Sanity校验
内容的提问来源于stack exchange,提问作者umer
相关产品推荐
相关产品推荐

