如何用Glob通配符匹配带日期后缀的CSV文件(Pandas场景)
用通配符匹配带日期后缀的CSV文件并读取(Pandas + Glob)
针对带动态日期后缀的CSV文件(比如file-name_20220814.csv),可以通过以下方式结合glob模块解决:
通配符匹配规则
直接用*通配符替换日期部分,匹配模式写为:files/file-name_*.csv,这个模式会匹配所有以file-name_开头、.csv结尾的文件。如果需要更严格匹配8位数字的日期(避免无关文件被误匹配),可以用精准模式:files/file-name_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].csv,不过日常场景下*通配符已经足够实用。
修改后的代码示例
基础版(读取匹配到的第一个文件)
import pandas as pd import glob # 获取所有符合规则的文件路径 matched_files = glob.glob('files/file-name_*.csv') # 读取第一个匹配到的文件 if matched_files: df1 = pd.read_csv(matched_files[0]) else: print("未找到匹配的文件")
进阶版(读取最新生成/修改的文件)
如果目录下有多个带日期后缀的文件,通常需要读取最新的那个,可以结合os模块按文件修改时间排序:
import pandas as pd import glob import os # 获取匹配的文件路径 matched_files = glob.glob('files/file-name_*.csv') if matched_files: # 按文件修改时间倒序排序,取第一个即为最新文件 matched_files.sort(key=lambda x: os.path.getmtime(x), reverse=True) latest_file = matched_files[0] df1 = pd.read_csv(latest_file) else: print("未找到匹配的文件")
补充说明
- 若能确保目录下只有一个符合规则的文件,基础版代码即可满足需求
- 也可以直接按文件名中的日期字符串排序,效果和按修改时间一致(前提是文件名的日期与文件生成时间同步)
内容的提问来源于stack exchange,提问作者Linter
相关产品推荐
相关产品推荐

