def read_yaml(self, path):
with open(path, encoding="utf-8") as f:
result = f.read()
result = yaml.load(result)
return result
当你运行的时候,会报一个Warning
因为在5.1之后,直接用load()已经过时了,需要在方法里面加一个 loader 的请求参数,如下:
def read_yaml(self, path):
with open(path, encoding="utf-8") as f:
result = f.read()
result = yaml.load(result, Loader=yaml.FullLoader) #loader可选择BaseLoader、SafeLoader、FullLoader、UnsafeLoader
return result
也可以,根据Python语法糖转换,如下:
def read_yaml(self, path):
with open(path, encoding="utf-8") as f:
result = f.read()
result = yaml.full_load(result)
return result
针对不同的需要,加载器有如下几种类型:
yaml.load(input)
Loader
向后兼容性):原始的Loader代码,可以通过不受信任的数据输入轻松利用。(unsafe_load) with open(path, "w", encoding="utf-8") as f:
yaml.dump(data, f, Dumper=yaml.SafeDumper) # 可选BaseDumper、SafeDumper
class YamlUtil:
__instance = None
def __new__(cls, *args, **kwargs):
if not cls.__instance:
print("YamlUtil first init")
cls.__instance = super(YamlUtil, cls).__new__(cls, *args, **kwargs)
return cls.__instance
def read_yaml(self, path):
with open(path, encoding="utf-8") as f:
result = f.read()
result = yaml.load(result, Loader=yaml.FullLoader)
return result
def write_yaml(self, path, data):
with open(path, "w", encoding="utf-8") as f:
yaml.dump(data, f, Dumper=yaml.SafeDumper)