您的位置:首页 > 编程语言 > Python开发

Python大佬告诉你:使用Python处理yaml格式的数据简单到爆

2019-09-16 14:21 1401 查看

一、思考❓❔

1.什么是yaml?

  • 不是标记语言
  • 对用户极其友好
  • 数据序列化标准
  • 跨语言 所有编程语言都支持
  • 跨平台
      所有平台都支持
    • Windows、linux、Mac
  • 格式简单
      比json小姐姐穿得更少
  • 应用非常广泛

  • 2.Python中哪些模块可以处理yaml?

    • pyyaml 应用最广泛
    • 封装的api不够简单
    • 不支持YAML 1.2最新版
  • ruamel.yaml
      是pyyaml的衍生版
    • 封装的api简单
    • 支持YAML 1.2最新版



    二、基础操作🔨🔨

    1.安装ruamel.yaml

    • 使用官方pypi源来安装
      pip install ruamel.yaml
  • 使用豆瓣pypi源来安装(推荐)
      pip install -i https://pypi.douban.com/simple ruamel.yaml


    2.基本用法

    • 在项目根目录下创建user_info.yaml文件

      # 外号
      ---
      user:
      - 可优
      - keyou
      - 小可可
      - 小优优
      
      # 爱人
      lovers:
      - 柠檬小姐姐
      - 橘子小姐姐
    • 将yaml格式的数据转化为python中的数据类型

      from ruamel.yaml import YAML
      
      # 第一步: 创建YAML对象
      yaml = YAML(typ='safe')
      
      # typ: 选择解析yaml的方式
      #  'rt'/None -> RoundTripLoader/RoundTripDumper(默认)
      #  'safe'    -> SafeLoader/SafeDumper,
      #  'unsafe'  -> normal/unsafe Loader/Dumper
      #  'base'    -> baseloader
      
      # 第二步: 读取yaml格式的文件
      with open('user_info.yaml', encoding='utf-8') as file:
      data = yaml.load(file)  # 为列表类型
      
      print(f"data:\n{data}")

      输入结果:

    • 将Python中的字典或者列表转化为yaml格式的数据

      from ruamel.yaml import YAML
      
      # 第一步: 创建YAML对象
      # yaml = YAML(typ='safe')
      yaml = YAML()
      
      # 第二步: 将Python中的字典类型数据转化为yaml格式的数据
      src_data = {'user': {'name': '可优', 'age': 17, 'money': None, 'gender': True},
      'lovers': ['柠檬小姐姐', '橘子小姐姐', '小可可']
      }
      
      with open('new_user_info.yaml', mode='w', encoding='utf-8') as file:
      yaml.dump(src_data, file)

      生成的new_user_info.yaml文件:

      user:
      name: 可优
      age: 17
      money:
      gender: true
      lovers:
      - 柠檬小姐姐
      - 橘子小姐姐
      - 小可可



    三、复杂案例演练🔨🔨

    1.将Python中的对象转化为yaml格式数据

    from ruamel.yaml import YAML
    
    # 第一步: 创建需要保存的User类
    class User:
    """
    定义用户类
    """
    def __init__(self, name, age, gender):
    self.name, self.age, self.gender = name, age, gender
    self.lovers = []
    
    def loved(self, user):
    self.lovers.append(user)
    
    # 第二步: 创建YAML对象
    yaml = YAML()
    
    # 第三步: 注册用户类
    yaml.register_class(User)
    
    # 第四步: 保存用户对象
    keyou = User("可优", 17, "油腻男")
    lemon_little_girl = User("柠檬小姐姐", 16, "素颜小仙女")
    orange_little_girl = User("橘子小姐姐", 18, "不会PS的靓妹")
    keyou.loved(lemon_little_girl)
    keyou.loved(orange_little_girl)
    
    with open('lovers.yaml', mode='w', encoding='utf-8') as file:
    yaml.dump([keyou], file)

    生成的lovers.yaml文件:

    - !User
    name: 可优
    age: 17
    gender: 油腻男
    lovers:
    - !User
    name: 柠檬小姐姐
    age: 16
    gender: 素颜小仙女
    lovers: []
    - !User
    name: 橘子小姐姐
    age: 18
    gender: 不会PS的靓妹
    lovers: []



    四、总结💡💡

    • yaml文件读取效率非常高
    • yaml文件相当适合存放测试数据
    • ruamel.yaml模块对yaml文件的操作进一步简化
    • yaml在自动化测试和测试开发中都有广泛应用

  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: