python语言可以处理数据文件吗_Python大佬告诉你:使用Python处理yaml格式的数据简单到爆...

一、思考❓❔

1.什么是yaml?

1640302-20190912112414897-169650789.png

不是标记语言

对用户极其友好

数据序列化标准

跨语言

所有编程语言都支持

跨平台

所有平台都支持

Windows、linux、Mac

格式简单

比json小姐姐穿得更少

应用非常广泛

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

1640302-20190912112430094-934067756.png

pyyaml

应用最广泛

封装的api不够简单

不支持YAML 1.2最新版

ruamel.yaml

是pyyaml的衍生版

封装的api简单

支持YAML 1.2最新版

二、基础操作🔨🔨

1640302-20190912112444850-496173882.png

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}")

输入结果:

1640302-20190912112508996-602062847.png

将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:

- 柠檬小姐姐

- 橘子小姐姐

- 小可可

三、复杂案例演练🔨🔨

1640302-20190912112528305-2073126789.png

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: []

四、总结💡💡

1640302-20190912112547643-1994619141.png

yaml文件读取效率非常高

yaml文件相当适合存放测试数据

ruamel.yaml模块对yaml文件的操作进一步简化

yaml在自动化测试和测试开发中都有广泛应用

1640302-20190912112603260-1717591523.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值