支持保存、加载和版本支持的YAMLBase类
项目描述
具有保存、延迟加载和可选版本支持的YAMLBase类
YAMLBase类使用基于文件名的路径(pathlib.Path)或字符串初始化,该文件包含一个YAML文件。除非提供了< span class="docutils literal">create_ok参数,否则此文件必须存在,否则将创建参数的实例(通常是类似列表或字典的对象)作为数据结构中的根。如果参数为True,则创建一个空的ruamel.yaml.CommentedMap()实例作为根。
通过.data属性访问根对象,如果指定了现有文件,则在首次访问.data时读取它。
from ruamel.yaml.base import YAMLBase
file_name = '/data0/talks/meta.yaml'
base = YAMLBase(file_name, create_ok=True)
base.data['PyCon 2006'] = dict(location='Dallas, TX, USA', title='Extending the life of CVS with Python')
base.data['EuroPython 2016'] = dict(location='Bilbao, Spain', title='Beyond scraping')
base.changed = True
base.save()
print(open(file_name).read())
打印内容
PyCon 2006: location: Dallas, TX, USA title: Extending the life of CVS with Python EuroPython 2016: location: Bilbao, Spain title: Beyond scraping
文档通常使用ruamel.yaml的默认往返模式加载。如果通过.fast_data访问现有文档,则通过较快的C加载器(不完全是YAML 1.2兼容)进行加载。在这种情况下,不应保存生成的文件。
除非.changed设置为True,否则save实际上不会转储YAML文档文件。将文件保存到文件会将.changed重置为False。使用force=True将独立于changed写入文件。您还可以添加额外的out参数,例如,在上面的示例的最后两行中,您可以这样做:
import sys base.save(out=sys.stdout) # not changing `.changed` base.save()
自动保存
如果 YAMLBase 使用 auto_save=True 初始化,并且 .changed 已经设置,那么当对象超出作用域时,YAML文件将被写入。
内部进度
初始化有一个可选的 verbose 参数,可以将其设置为正整数以获取一些关于内部进行的操作的信息。
替代初始化
当你对 YAMLBase 进行子类化时,你可以在调用 super() 之前设置属性来预置 create_ok 和 auto_save 的值。
class X(YAMLBase): def __init__(self, path): self._create_ok = True self._auto_save = True super().__init__(path=path)
项目详情
关闭
ruamel.yaml.base-0.3.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 88b6edc8ace60c12d98f05fda22e5d9d69ba9a4b531cf54783142151145b0372 |
|
MD5 | 420a8b48b2c4f4cbcc190fe7131080e8 |
|
BLAKE2b-256 | 4348a9857909c0c2982c79e7ace20b9e63455b457f62aae0b18f94d5f6ccdbaf |
关闭
ruamel.yaml.base-0.3.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c3dbd29a507579863a492e58f556e2d922b13dee1846b93a0b8fb6b76d98f440 |
|
MD5 | 66faa622f4a3516fa660f5a7783bcd54 |
|
BLAKE2b-256 | 161b0c255d7e70b4c0178719f6f74457c54a3b120483c9041a8bbf331617da64 |