下面是一个封装了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。