You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中用类Unix通配符读取动态命名文件至Pandas DataFrame

使用通配符匹配动态文件名并读取到Pandas DataFrame

你的问题在于只拼接了日期部分,但文件名末尾还有动态变化的字符,所以需要借助glob模块来处理类Unix风格的通配符匹配,它能帮你找到符合特定模式的所有文件。

下面是具体的解决步骤和代码:

步骤说明

  • 首先导入glob模块(Python标准库自带,无需额外安装),它专门用于处理文件路径的模式匹配
  • 构造包含通配符的文件路径模式:用*来匹配日期后面的任意动态字符
  • 获取匹配到的文件路径列表,同时处理可能的“无匹配文件”或“多文件匹配”情况
  • 用Pandas读取目标文件

完整代码示例

import pandas as pd
import time
import glob

# 生成指定格式的日期字符串
T = time.strftime("%m_%d_%Y")
# 构造匹配模式:匹配以「file_日期_」开头的所有文件
file_pattern = f"file_{T}_*"

# 获取所有符合模式的文件路径
matching_files = glob.glob(file_pattern)

# 处理匹配结果的边界情况
if not matching_files:
    raise FileNotFoundError(f"No files found matching pattern: {file_pattern}")
elif len(matching_files) > 1:
    print(f"提示:找到多个匹配文件,将使用第一个:{matching_files[0]}")

# 读取第一个匹配到的文件到DataFrame
df = pd.read_csv(matching_files[0])

补充优化方案

如果你的项目更倾向于使用现代路径处理方式,可以用pathlib模块替代glob,代码会更简洁直观:

import pandas as pd
import time
from pathlib import Path

T = time.strftime("%m_%d_%Y")
file_pattern = f"file_{T}_*"
# 查找当前目录下符合模式的文件
matching_files = list(Path(".").glob(file_pattern))

if matching_files:
    df = pd.read_csv(matching_files[0])
else:
    raise FileNotFoundError(f"No files found for pattern {file_pattern}")

如果需要递归查找子目录里的文件,只需要给glob方法加上recursive=True参数即可。

内容的提问来源于stack exchange,提问作者Rajesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:06:40