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

如何按文件名中的日期子串分组查找目录中的文件集合

按日期分组查找土壤湿度文件的方法

你可以通过提取文件名中的日期子串,再用字典对文件进行分组的方式,实现动态匹配相同日期的文件集合。以下是具体实现方案:

核心思路

  1. 用glob获取所有符合命名格式的文件路径
  2. 从每个文件名中提取出日期部分(即YYYYMMD格式的子串)
  3. 以日期为键,将对应文件路径存入字典的列表中,最终得到按日期分组的文件集合

实现代码

基础版(字符串拆分)

这种方式适合命名格式固定的场景:

import glob
import os
from collections import defaultdict

# 初始化字典,用于按日期分组存储文件
date_file_groups = defaultdict(list)

# 获取所有目标文件
for file_path in glob.glob('/dir/soil_moisture_*_sm_global.tif'):
    # 提取文件名(去掉路径)
    filename = os.path.basename(file_path)
    # 拆分文件名获取日期部分:从第二个下划线后、T之前的内容
    date_time_part = filename.split('_')[1]
    date_str = date_time_part.split('T')[0]
    # 将文件路径加入对应日期的列表
    date_file_groups[date_str].append(file_path)

# 输出分组结果
for date, files in date_file_groups.items():
    print(f"日期 {date} 的文件列表:")
    for f in files:
        print(f"  {f}")

健壮版(正则表达式)

如果文件名格式可能有微小变化,用正则表达式提取日期更可靠:

import glob
import os
import re
from collections import defaultdict

date_file_groups = defaultdict(list)
# 正则匹配日期部分:匹配soil_moisture_之后、T之前的数字串
date_pattern = re.compile(r'soil_moisture_(\d+)T')

for file_path in glob.glob('/dir/soil_moisture_*_sm_global.tif'):
    filename = os.path.basename(file_path)
    match_result = date_pattern.search(filename)
    if match_result:
        date_str = match_result.group(1)
        date_file_groups[date_str].append(file_path)

# 遍历输出分组
for date, files in date_file_groups.items():
    print(f"\n=== 日期 {date} ===")
    for f in files:
        print(f)

说明

  • 使用defaultdict可以自动为新日期创建空列表,无需手动判断键是否存在
  • os.path.basename比直接用split('/')更适配不同操作系统的路径格式
  • 正则表达式的方式能应对文件名中可能出现的格式变动(比如下划线数量微调)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:42:42