打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python技巧发挥YAML文件的全部潜力

下面是一个封装了YAML文件的增删改查操作的示例类

import osimport yamlclass YamlFile: def __init__(self, yaml_file): if os.path.exists(yaml_file): #检查文件是否存在 self.yaml_file = yaml_file else: raise FileNotFoundError('yaml文件不存在') self._data = None self._data_all = None def read_yaml(self): ''' 读取单个YAML文件并返回文件中的数据。 ''' if not self._data: with open(self.yaml_file, 'rb') as file: self._data = yaml.safe_load(file) return self._data def read_yaml_all(self): ''' 读取所有的YAML文件并返回文件中的数据。 ''' if not self._data_all: with open(self.yaml_file, 'rb') as file: self._data_all = yaml.safe_load_all(file) return self._data_all def write_yaml(self, data): ''' 将数据写入到YAML文件中。 ''' with open(self.yaml_file, 'w') as file: yaml.dump(data, file) def get_yaml_value(self, key): ''' 根据键获取YAML文件中对应的值。 ''' data = self.read_yaml() return data.get(key, None) def set_yaml_value(self, key, value): ''' 设置YAML文件中指定键的值。 ''' data = self.read_yaml() data[key] = value self.write_yaml(data) return True def remove_yaml_key(self, key): ''' 删除YAML文件中指定键的值。 ''' data = self.read_yaml() if key in data: del data[key] self.write_yaml(data) return True else: return Falseif __name__ == '__main__': pass

每个方法的含义如下

read_yaml: 读取YAML文件并返回文件中的数据。它使用open函数打开文件,然后使用yaml.safe_load函数将文件中的YAML数据加载为Python数据结构,并将其返回。read_yaml_all:,它用于安全地加载一个或多个 YAML 文档。safe_load_all 函数会逐个加载并解析每个 YAML 文档,并返回一个生成器对象。通过迭代生成器,你可以逐个访问每个 YAML 文档的 Python 对象表示。使用 safe_load_all 函数的示例如下:import yamlwith open('data.yml', 'r') as file:    documents = yaml.safe_load_all(file)    for doc in documents:        print(doc)write_yaml: 将数据写入到YAML文件中。它使用open函数打开文件,然后使用yaml.dump函数将Python数据结构转换为YAML格式,并将其写入文件中。get_yaml_value: 根据键获取YAML文件中对应的值。它首先调用read方法读取文件中的数据,然后使用get方法获取指定键的值。如果键不存在,则返回None。set_yaml_value: 设置YAML文件中指定键的值。它首先调用read方法读取文件中的数据,然后更新数据字典中指定键的值,并调用write方法将更新后的数据写回到文件中。remove_yaml_key: 删除YAML文件中指定键的值。它首先调用read方法读取文件中的数据,然后检查指定键是否存在于数据字典中。如果存在,则使用del语句从字典中删除该键值对,并调用write方法将更新后的数据写回到文件中。如果键不存在,则返回False。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
pytest
Python监控(monitor)文件系统(Linux file system)事件(变化):watchdog、pyinotify
《自拍教程78》Python 百度网盘500个文件分割
想要高效读写文件吗?Python的mmap()函数或许可以解决你的问题
pytest文档71-pytest+yaml实现接口自动化框架
最全总结 | 聊聊 Python 数据处理全家桶(配置篇)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服