现有多张csv表,表格很大,表头相同
 打开一个表是这样子的:
打开一个表是这样子的:

现在需要将“资金小类”列中包含“天猫佣金”的数据行全部取出,放入新表,代码如下:
| 取数表 | 多个CSV表 | |
| 目标表 | 一个CSV表 | |
| 应用场景: | 将同类别的多个表中的某一类数据取出统一放到一张新表中 | |
| 引用模块 | os,csv | |
| 序号 | 代码 | 说明 | 
| 1 | # 导入模块 | |
| 2 | import os | 批量处理文件必用 | 
| 3 | import csv | CSV文件读写必用 | 
| 4 | # 设置新表的路径 | |
| 5 | new_path = './费用流水汇总.csv' | 目标文件路径 | 
| 6 | # 设置文件夹路径 | |
| 7 | path = './费用流水/' | 多个文件所在路径 | 
| 8 | # 返回当前目录下所有文件名 | |
| 9 | fill = os.listdir(path) | |
| 10 | # 新建一个空列表 | |
| 11 | rows = [] | |
| 12 | # 循环文件名列表 | |
| 13 | for fill_name in fill: | |
| 14 | # 拼接文件路径 | |
| 15 | fill_path = path + fill_name | |
| 16 | # 以自动关闭的方式打开文件 | |
| 17 | with open(fill_path,'r',encoding='gbk') as f: | 编码格式报错可改成:utf-8 | 
| 18 | # 以字典的形式获取 csv 文件信息 | |
| 19 | csv_reader = csv.DictReader(f) | |
| 20 | # 读取表头 | |
| 21 | head = csv_reader.fieldnames | |
| 22 | # 定义表中的字典 | |
| 23 | for row in csv_reader: | |
| 24 | # 当【资金小类】列中含“天猫佣金”时,取出该行数据 | |
| 25 | if '天猫佣金' in row['资金小类']: | |
| 26 | # 将数据循环写入 rows 列表中 | |
| 27 | rows.append(row) | |
| 28 | # 以自动关闭的方式打开新表 | |
| 29 | with open(new_path,'w',encoding='gbk') as k: | 编码格式报错可改成:utf-8 | 
| 30 | # 实例化类 DictWriter() 得到 DictWriter 对象 | |
| 31 | csv_writer = csv.DictWriter(k,fieldnames=head,lineterminator='\n') | lineterminator='\n':可以确保无空行 | 
| 32 | # 写入文件的表头 | |
| 33 | csv_writer.writeheader() | |
| 34 | # 写入文件的多行内容 | |
| 35 | csv_writer.writerows(rows) | 
运行结果如下:

当多个CSV表都很大,每次打开都需要加载很久时非常好用,该程序运行仅需几分钟即可出结果。










