如何解决使用ruamel.yaml进行数据转储期间,“ CommentedMap”对象没有属性“ _context_manager”
这是我的代码:
fasthttp
我在import ruamel.yaml
import pathlib
class YamlLoader:
@staticmethod
def safe_load(filename):
filepath = pathlib.Path(filename)
with open(filepath) as stream:
if ruamel.yaml.version_info < (0,15):
data = ruamel.yaml.safe_load(stream)
else:
yml = ruamel.yaml.YAML(typ='safe',pure=True)
data = yml.load(stream)
return data
@staticmethod
def save(yaml,filename):
filepath = pathlib.Path(filename)
if ruamel.yaml.version_info < (0,15):
ruamel.yaml.safe_dump(yaml,filepath)
else:
ruamel.yaml.YAML.dump(yaml,filepath)
中的代码:
main.py
然后在变量中获取我的YAML数据。
但是,当我这样做时:
data = YamlLoader.safe_load("data.yaml")
print(data)
我收到错误消息:
回溯(最近一次通话最后一次):文件“”,第1行,在 文件 “ /usr/local/lib/python3.8/site-packages/ruamel/yaml/main.py”,行 434,在转储 如果self._context_manager:AttributeError:'CommentedMap'对象没有属性'_context_manager'
很可能我以错误的方式使用了API,但我不知道问题出在哪里。
解决方法
代码的最后一行有问题:
ruamel.yaml.YAML.dump(yaml,filepath)
因为您没有像创建载入一样创建YAML
的实例。
可以:
yml = ruamel.yaml.YAML()
yml.dump(yaml,filepath)
或执行:
ruamel.yaml.YAML().dump(yaml,filepath)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。