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

如何使用正则表达式处理os.listdir文件,删除前7字符匹配的文件

搞定按前缀匹配删除文件的需求

嘿,我来帮你解决这个问题!其实你的思路方向是对的,只要把正则匹配、前缀分组和删除操作串起来就行,咱们一步步来:

第一步:准备基础代码

先把需要的模块和你定义好的正则表达式搭好架子:

import os
import re

# 对应你给出的两个匹配规则
pattern_17 = r'^[1-9\w]{2}_[1-9\w]{4}[1][7][\d\w]+\.[\d\w]+'  # 匹配带17的目标文件,比如bh_txbh171002.xml
pattern_18 = r'^[1-9\w]{2}_[1-9\w]{4}[1][8]+'  # 匹配带18的目标文件,比如bh_txbh180101.xml

第二步:按前7个字符给文件分组

我们先遍历目标文件夹,把符合两个正则的文件筛选出来,再按前7个字符归到同一组里——毕竟你的核心需求就是“前缀匹配就删”,分组后处理起来会特别清晰:

target_dir = "你的文件夹路径"  # 记得替换成你实际的文件夹路径
file_groups = {}  # 用字典存分组:key是前7个字符,value是该组下的文件列表

for filename in os.listdir(target_dir):
    # 检查是否符合第一个正则规则
    if re.match(pattern_17, filename):
        prefix = filename[:7]  # 直接切片获取前7个字符当分组标识
        if prefix not in file_groups:
            file_groups[prefix] = []
        file_groups[prefix].append(('type17', filename))
    # 检查是否符合第二个正则规则
    elif re.match(pattern_18, filename):
        prefix = filename[:7]
        if prefix not in file_groups:
            file_groups[prefix] = []
        file_groups[prefix].append(('type18', filename))

第三步:分组处理并删除目标文件

现在每个分组里要么只有一类文件,要么同时存在17和18开头的配对文件。我们只需要处理那些有配对的分组,删除你指定的文件就行——从你的例子来看,应该是删除带18的文件?如果要删17的,改一下判断条件就好:

for prefix, files in file_groups.items():
    # 验证当前分组是否同时存在两类配对文件
    has_17_file = any(item[0] == 'type17' for item in files)
    has_18_file = any(item[0] == 'type18' for item in files)
    
    if has_17_file and has_18_file:
        # 遍历组内文件,删除目标类型的文件
        for file_type, name in files:
            if file_type == 'type18':
                file_path = os.path.join(target_dir, name)
                # !重要提醒:先打印确认要删除的文件路径,没问题再执行删除
                print(f"待删除文件:{file_path}")
                # os.remove(file_path)  # 确认无误后取消这行的注释

额外小提示

  • 关于re.match:你之前的误解是错的!它就是从字符串开头匹配的,不匹配会返回None,完全适合用来判断文件名是否符合规则。
  • 关于前缀获取:直接用filename[:7]就搞定了,比startswith灵活太多——毕竟你要的是动态前缀匹配,不是固定某个字符串开头。
  • 安全警告:删除文件是不可逆操作!一定要先打印待删除路径,确认都是你想删的文件,再取消os.remove的注释哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:47:30