现有多张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表都很大,每次打开都需要加载很久时非常好用,该程序运行仅需几分钟即可出结果。