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

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

import os
import yaml

class 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 False

if __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 yaml

with 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经历一个春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值