Python如何筛选文件名含指定关键词的CSV文件并合并
实现文件名筛选后合并CSV的修正方案
核心逻辑是在原有代码基础上增加文件名关键词过滤环节,仅读入文件名包含tables的CSV文件做拼接,两种可直接运行的实现方式如下:
方式1:直接修改glob匹配规则(推荐,执行效率更高)
无需先拉取路径下所有CSV再做过滤,直接在文件匹配阶段就筛选出符合关键词规则的文件,把原代码的glob匹配规则调整为*tables*.csv即可,该模式代表匹配所有文件名任意位置包含tables、后缀为csv的文件。
修正后完整代码:
import glob import pandas as pd path = "folder_directory" # 直接匹配文件名包含tables关键词的csv文件 files = glob.glob(path + "/*tables*.csv") content = [] for filename in files: df = pd.read_csv(filename, index_col=None) content.append(df) # 拼接时增加ignore_index=True重置行索引,避免多文件原有索引重复 data_frame = pd.concat(content, ignore_index=True) print(data_frame)
方式2:遍历环节增加关键词判断(规则灵活性更高)
如果后续需要调整为多关键词匹配、正则匹配等复杂文件名规则,可以保留全量CSV匹配逻辑,在读入文件前增加关键词判断环节,仅对符合要求的文件做读入操作:
import glob import os import pandas as pd path = "folder_directory" files = glob.glob(path + "/*.csv") content = [] target_keyword = "tables" for filename in files: # 提取不含路径的纯文件名做判断,避免上级文件夹名包含tables导致误匹配 if target_keyword in os.path.basename(filename): df = pd.read_csv(filename, index_col=None) content.append(df) data_frame = pd.concat(content, ignore_index=True) print(data_frame)
效果验证
针对给出的示例文件列表,两种方案的筛选结果完全符合预期:
- abcd-tables.csv:包含tables关键词,会被纳入合并
- abcd-text.csv:不含目标关键词,自动跳过
- abcd-forms.csv:不含目标关键词,自动跳过
- defg-tables.csv:包含tables关键词,会被纳入合并
- defg-text.csv:不含目标关键词,自动跳过
- defg-forms.csv:不含目标关键词,自动跳过
内容的提问来源于stack exchange,提问作者bieha
相关产品推荐
相关产品推荐

