使用yaml来写配置文件,和简单的存储数据使用,简直方便的不要不要的,简单总结下yaml 的基本使用方法
废话不多说,直接上代码,基本就两个文件
test.yaml
user: admin
pwd: 123
job:
- teacher
- nurese
-
test: hell0
n1: 52.10
#输出:{'n1': 52.1}
n2: true
n3: false #不区分大小写
#输出:{'n2': True, 'n3': False}
# None用~表示
n4: ~ #输出:{'n4': None}
n7: !!str true
#输出:{'n7': 'true'}
excel:
title:
- one
- two
- three
data:
- #data row 1
- one_one
- one_two
- one_three
- #data row 2
- one_one
- one_two
- one_three
yaml_test.py
# -*- coding:utf-8 -*-
import yaml
def load_yaml(path):
yaml.warnings({'YAMLLoadWarning':False})
f=open(path,'r',encoding='utf-8') #打开yaml文件
cfg=f.read()
data=yaml.load(cfg)
return data
if __name__ == '__main__':
arr=load_yaml('./test.yaml')
print(arr)
以上两个文件,基本可以实现yaml的简单实用,下面是将yaml封装成一个类,实现读写yaml的功能
YamlUtil.py
# -*- coding:utf-8 -*-
import yaml
from string import Template
class YamlUtil:
def __init__(self, yaml_file):
self.yaml_file = yaml_file
def set_yaml_path(self,yaml_file):
self.yaml_file = yaml_file
return self
def read_yaml(self):
with open(self.yaml_file, 'r', encoding='utf-8') as f:
# 正常格式控制台输出
# value = yaml.load(f, Loader=yaml.FullLoader)
# 原格式输出
value = f.read()
temp = Template(value)
# substitute替代者
# safe_substitute可以让不想匹配的变量当正常的字符串使用
res = temp.safe_substitute({'user': 'lily', 'psw': '123456'})
yaml_data = yaml.safe_load(res)
#print(res) 原样输出
#print(yaml_data) #字典输出
return yaml_data
#param write_data Dict
def set_write_data(self,write_data):
self.write_data=write_data
return self
def write_yaml(self,write_mode='a'):
with open(self.yaml_file,write_mode,encoding='utf-8') as f: #'a'代表持续写入,‘w’代表覆盖写入
yaml.dump(self.write_data,f)
print('well done')
return self
def load_yaml_all(path):
#由于官方提示load方法存在安全漏洞,所以读取文件时会报错。加上warning忽略,就不会显示警告
yaml.warnings({'YAMLLoadWarning':False})
f=open(path,'r',encoding='utf-8') #打开yaml文件
cfg=f.read()
d=yaml.load_all(cfg) #将数据转换成python字典行驶输出,存在多个文件时,用load_all,单个的时候load就可以
return d
def load_yaml(path):
#由于官方提示load方法存在安全漏洞,所以读取文件时会报错。加上warning忽略,就不会显示警告
yaml.warnings({'YAMLLoadWarning':False})
f=open(path,'r',encoding='utf-8') #打开yaml文件
cfg=f.read()
d=yaml.load(cfg) #将数据转换成python字典行驶输出,存在多个文件时,用load_all,单个的时候load就可以
return d
if __name__ == '__main__':
write_data={
"url":'https://www.baidu.com/',
"driver":['ie','chrome','firfox',{'titile':'hello','test':[1,2,3,4]}],
"test":'test',
}
write_data=[1,2,3,4,[{'1':1,'2':2}]]
#yal.set_yaml_path("./test2.yaml").set_write_data(write_data).write_yaml('w').read_yaml()
yal=YamlUtil('./test2.yaml')
yal_data=yal.set_write_data(write_data).write_yaml("w").read_yaml()
print(yal_data)
'''
arr=load_yaml('./test.yaml')
print(arr)
'''
本文简要介绍了yaml的便利性,特别是用于配置文件和数据存储。通过示例代码展示了如何使用yaml,包括`test.yaml`和`yaml_test.py`两个文件,以及一个`YamlUtil.py`类,用于实现yaml文件的读写操作。
541

被折叠的 条评论
为什么被折叠?



