<返回更多

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

2023-07-18  今日头条  云中随心而记
加入收藏

下面是一个封装了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/ target=_blank class=infotextkey>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。
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>