前面我们完成了对单个文件的读取:【会员总表.csv】文件;
以及对多个文件的批量读取:【1级会员表.csv】文件、【2级会员表.csv】文件、【3级会员表.csv】文件。
接下来要将各个等级的会员表信息录入到会员总表。
虽然这项工作操作难度不高,但每天都要做,还是挺花时间的。
能否用 Python 帮助晓薇解决这项重复性工作呢?
题目要求
实现功能:编写一段代码,将【各等级会员表】文件夹下所有的 csv 文件信息写入到【会员总表.csv】文件。
输出结果:【会员总表.csv】文件末尾添加 13 行数据,包括 1 级会员(7 行)、2 级会员(4 行)、3 级会员(2 行)。
具体输出结果见下:
实现代码:
1)变量名建议:文件的表头 —— head;文件路径 —— file_path;文件夹路径 —— folder_path;实例化 csv 文件后得到的 DictReader 对象—— file_reader;实例化 csv 文件后得到的 DictWriter 对象—— file_writer。
2)可以采用文件夹拼接文件名的方式,结合 for 循环,批量获取文件路径。
3)可以使用for循环
和append()
函数,将读取出来的行数据,循环写入列表中。
# 导入模块
import csv
import os
# 设置文件夹路径
folder_path = '../工作/各等级会员表/'
# 获取所有文件名
file_list = os.listdir(folder_path)
# 设置文件的表头
head = ['会员卡号', '性别', '会员卡级别']
# 设置一个空列表,用来存储行数据
list1=[]
# 遍历所有文件
for rows in file_list:
# 通过文件夹拼接文件名的方式,获取文件路径
file_path=folder_path+rows
# 以自动关闭的方式打开文件
with open(file_path,'r',encoding='utf-8') as f:
# 以字典的形式获取 csv 文件信息
file_reader=csv.DictReader(f)
# 遍历数据
for row in file_reader:
# 打印数据
print(row)
# 将读取出来的行数据,循环写入 rows 列表中
list1.append(row)
# 以追加的方式写入文件
with open('../工作/会员总表.csv', 'a', encoding='utf-8') as file:
# 实例化类 DictWriter() 得到 DictWriter 对象
file_writer=csv.DictWriter(file,filednames=head)
# 写入文件的多行内容
file_writer.writerows(rows)
运行效果: