1、文件处理应用
测试数据和测试代码分离开来:yaml文件 excel文件 txt文件 csv文件
2、yaml文件读取
a.基本操作步骤
a.创建一个yaml文件,写yaml文件数据,读取yaml数据
b.第三库安装yaml,安装方式:
a.cmd(pip install pyyaml),pip list:查看是否安装成功(pyyaml)
b.在setting中安装
c.引入yaml:import yaml
d.语法规则:字典类型的数据 格式(键: 值 :后要空格)
b.字典
a.test.yaml(字典)数据:
id: 1
name: '秋水'
age: 18
sex: '女'
b.打开文件,设置可读,{}读的字典数据,读取yaml数据
f = open('./data/test.yaml','r',encoding='gbk')
data = yaml.load(f,yaml.FullLoader)
print(data,type(data))
输出结果:{'id': 1, 'name': '秋水', 'age': 18, 'sex': '女'} <class 'dict'>
c.问题:读取yaml里面的秋水数据,通过键名拿到值
print(data.get('name'))
print(data['name'])
f.close()
输出结果:
秋水
秋水
c.列表
a.test.yaml1(列表)数据:
- 1
- '秋水'
- 18
- '女'
b.打开文件,设置可读,-读的列表数据,读取yaml数据
with open('./data/test1.yaml','r',encoding='utf-8') as f1:
data=yaml.load(f1,yaml.FullLoader)
print(data,type(data))
输出结果:[1, '秋水', 18, '女'] <class 'list'>
c.问题:读取yaml里面的秋水数据,通过下标拿到值
print(data[1]) 输出结果:秋水
d.列表嵌套字典
a.test.yaml2(列表嵌套字典)数据:
-
id: 1
name: '小猫'
age: 6
sex: '母'
-
id: 2
name: '小狗'
age: 8
sex: '公'
b.打开文件,设置可读,-读的列表嵌套字典数据,读取yaml数据
with open('./data/test2.yaml','r',encoding='utf-8') as f:
data=yaml.load(f,yaml.FullLoader)
print(data)
输出结果:
[{'id': 1, 'name': '猫', 'age': 6, 'sex': '母'},
{'id': 2, 'name': '狗', 'age': 8, 'sex': '公'}]
c.问题:读取yaml里面的虚竹数据,通过(下标+键名)拿到值
print(data[1]['name']) 输出结果:狗
e.列表嵌套(字典、data、列表)
a.test.yaml3(列表嵌套(字典、data、列表))数据:
-
id: 1
name: '秋水'
age: 18
data:
address: '长沙'
status: 'success'
sex: '女'
-
- 'a'
- 'b'
- 'c'
b.打开文件,设置可读,-读的列表嵌套(字典、data、列表),读取yaml数据
with open('./data/test3.yaml','r',encoding='utf-8') as f:
data = yaml.load(f, yaml.FullLoader)
print(data)
输出结果:
[{'id': 1, 'name': '秋水', 'age': 18, 'data': {'address': '长沙', 'status': 'success'}, 'sex': '女'}, ['a', 'b', 'c']]
3、excel文件读取
a.基本操作步骤
a.创建一个excel文件,写excel文件数据,读取excel数据
b.第三库安装openpyxl,安装方式
a.cmd(pip install openpyxl),pip list:查看是否安装成功(openpyxl)
b.在setting中安装
c.引入openpyxl:import openpyxl
b.excel读取示范
a.excel文件数据
Sheet1
编号 姓名 年龄 性别 结果
1 小翠 18 男
2 二狗 19 女
3 铁柱 20 男
4 翠花 21 女
5 狗蛋 22 男
Sheet2
1 小翠 18 男
2 二狗 19 女
b.引入openpyxl:import openpyxl
c.加载工作簿,返回一个excel对象,指定工作簿路径
wb=openpyxl.load_workbook('./data/bb.xlsx')
print(wb)
输出结果:<openpyxl.workbook.workbook.Workbook object at 0x110311790>
d.指定sheet表单,你的数据写在哪个表单里面
sheet=wb['Sheet1']
print(sheet)
输出结果:<Worksheet "Sheet1">
e.拿单元格取值
方式一:
id1=sheet['A1'].value
print(id1)
输出结果:编号
方式二:
name=sheet.cell(row=1,column=2).value
print(name)
输出结果:姓名
f.拿到所有的值,如果没有值就会是none
values=sheet.values
for i in values:
print(i)
等同于:
for i in sheet.values:
print(i)
输出结果:
('编号', '姓名', '年龄', '性别', '结果')
(1, '小翠', 18, '男', None)
(2, '二狗', 19, '女', None)
(3, '铁柱', 20, '男', None)
(4, '翠花', 21, '女', None)
(5, '狗蛋', 22, '男', None)
g.统计一个表单总共有多少条数据,range(左闭右开)
rows=sheet.max_row
print(rows)
for i in range(1,rows+1):
id=sheet.cell(row=i,column=1).value
name=sheet.cell(row=i,column=2).value
age=sheet.cell(row=i,column=3).value
sex=sheet.cell(row=i,column=4).value
print(id,name,age,sex)
输出结果:
6
编号 姓名 年龄 性别
1 小翠 18 男
2 二狗 19 女
3 铁柱 20 男
4 翠花 21 女
5 狗蛋 22 男
h.读取所有的sheet
sheets=wb.sheetnames
print(sheets)
输出结果:['Sheet1', 'Sheet2', 'Sheet3']
i.读取到所有的表单的数据
for i in sheets:
print(i)
for j in wb[i].values:
print(j)
输出结果:
Sheet1
('编号', '姓名', '年龄', '性别', '结果')
(1, '小翠', 18, '男', None)
(2, '二狗', 19, '女', None)
(3, '铁柱', 20, '男', None)
(4, '翠花', 21, '女', None)
(5, '狗蛋', 22, '男', None)
Sheet2
(1, '小翠', 18, '男')
(2, '二狗', 19, '女')
Sheet3
j.写入数据保存在表单里面
sheet.cell(row=1,column=5).value='结果'
wb.save('./data/bb.xlsx')
【总结Excel文件】
1、获取工作薄:load_workbook
2、指定sheet表单:wb['XXX']
3、拿单元格取值:(1)sheet['A1'].value (2)sheet.cell
4、拿到所有表数据的值,没有值将none显示:sheet.values
5、统计一个表单总共有多少条数据:sheet.max_row
6、读取所有的sheet:wb.sheetnames
7、读取到所有的表单的数据:wb[i].values
8、写入数据保存:wb.save
4、csv文件读取
a.基本操作步骤
a.创建一个csv文件,写csv文件数据,读取csv数据
b.引入csv:import csv
b.csv读取示范
a.csv文件数据
编号,姓名,年龄
1,'翠花',18
2,'二狗',22
b.引入csv:import csv
c.打开文件,读取csv的所有内容
with open('./data/aa.csv','r',encoding='utf-8') as f:
csv.reader(f)
print(f)
for i in f:
print(i)
输出结果:
编号,姓名,年龄
1,'翠花',18
2,'二狗',22
d.读取csv文件某一行的数据(了解)
with open('./data/aa.csv','r',encoding='utf-8') as f:
result=list(csv.reader(f))
print(result[0],result[1])
输出结果:['编号', '姓名', '年龄'] ['1', "'翠花'", '18']
e.读取csv文件某一列的数据(了解)
with open('./data/aa.csv','r',encoding='utf-8') as f:
for i in csv.reader(f):
print(i[0])
输出结果:
编号
1
2
f.往csv文件写入数据
stu1=[3,'小猫',18]
stu2=[4,'小狗',21]
with open('./data/aa.csv','a',encoding='utf-8',newline='')as f:
csv.writer(f).writerow(stu1)
csv.writer(f).writerow(stu2)
输出结果:
编号,姓名,年龄
1,'翠花',18
2,'二狗',22
3,小猫,18
4,小狗,21
stus=[
(5,'深圳','500'),
(6,'广州','450'),
]
with open('./data/aa.csv','a',encoding='utf-8',newline='') as f:
for i in stus:
csv.writer(f).writerow(i)
输出结果:
编号,姓名,年龄
1,'翠花',18
2,'二狗',22
3,小猫,18
4,小狗,21
5,深圳,500
6,广州,450
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现