简单总结下yaml 的基本使用方法

本文简要介绍了yaml的便利性,特别是用于配置文件和数据存储。通过示例代码展示了如何使用yaml,包括`test.yaml`和`yaml_test.py`两个文件,以及一个`YamlUtil.py`类,用于实现yaml文件的读写操作。
使用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)
    '''

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值