Python如何忽略文件名末尾随机数字段匹配导入目标CSV文件
解决方案
核心逻辑是放弃硬编码完整文件名,用通配符匹配固定前缀的方式,自动忽略末尾随机变动的数字段。
实现步骤
- 用原始字符串写法定义文件存储目录,规避Windows路径反斜杠的转义问题
- 用
strftime生成带确定日期的文件名前缀,末尾用通配符*代替随机数字段组成匹配规则 - 遍历目录找到符合规则的目标文件,增加数量校验避免读错文件
- 读取匹配到的唯一目标文件即可
代码实现
import pandas as pd import glob import os # 定义文件存储目录,r开头的原始字符串不会解析反斜杠转义 target_folder = r'I:\Example\import' # 构造匹配规则:固定日期前缀+任意后缀的csv文件 file_pattern = yesterday.strftime('Example_NEW_%Y-%m-%d-*.csv') # 拼接完整匹配路径 match_path = os.path.join(target_folder, file_pattern) # 拉取所有符合规则的文件列表 result_files = glob.glob(match_path) # 校验文件数量,正常情况每日仅生成1个符合规则的文件 if len(result_files) != 1: raise ValueError(f"目标文件匹配异常,当前找到{len(result_files)}个符合条件的文件:{result_files}") # 读取文件 data = pd.read_csv(result_files[0])
关键说明
- 通配符
*可以匹配任意长度的任意字符,不管末尾随机段是00-00-48还是其他数字组合,都能正常命中目标文件 - 不要直接在路径字符串里写单个反斜杠,不加原始字符串标记的话,
\E、\i这类组合容易被Python识别为转义字符,导致路径报错 - 增加文件数量校验是为了避免目录下残留同日期前缀的历史文件、或者当日文件未生成时,代码静默读错数据
内容的提问来源于stack exchange,提问作者NiMingDe
相关产品推荐
相关产品推荐

