下面是一個封裝了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。