千纸鹤

  博客园  ::  :: 新随笔  ::  ::  :: 管理

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

posted on 2022-04-19 14:30  运维2005  阅读(44)  评论(0)    收藏  举报