使用Python/Robot Framework读取YAML时遇ON键AttributeError问题咨询
问题原因分析
这是YAML内置布尔类型别名导致的问题:
- YAML规范中,
ON、OFF、YES、NO(大小写不敏感)属于布尔值的隐式别名,默认会被解析为True/False,而非字符串类型的键。 - 你的YAML里
ON未加引号,解析后会变成布尔值True,而非字符串键"ON"。当你尝试用字符串键"ON"访问字典值,或是用Robot Framework的点语法做属性访问时,找不到对应键就会触发AttributeError。 - 编辑器中
ON显示红色,是因为语法高亮工具识别出它是YAML的内置布尔常量,和普通字符串键(比如AB)做了区分。
解决方法
- 给
ON键加引号,强制解析为字符串:SectionPage: AB: Sample Value AB "ON": Sample Value ON - 如果用Python的PyYAML解析,可配置Loader禁用布尔别名解析:
import yaml from yaml.loader import SafeLoader # 移除对o/O/y/Y/n/N开头的隐式布尔解析 SafeLoader.yaml_implicit_resolvers = { k: v for k, v in SafeLoader.yaml_implicit_resolvers.items() if k not in {'o', 'O', 'y', 'Y', 'n', 'N'} } with open('your_file.yaml') as f: data = yaml.load(f, Loader=SafeLoader)
内容的提问来源于stack exchange,提问作者Hemendra
相关产品推荐
相关产品推荐

