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

Python如何用正则匹配指定命名模式的PDF文件并修复分支判断错误?

问题原因与修复方案

原代码核心错误点

  • 未正确使用正则匹配逻辑:直接判断正则模式字符串本身的布尔值,非空字符串在Python中恒为True,因此所有PDF文件都会进入第一个if分支
  • 正则表达式语法错误:$代表字符串结束标识,放在文件名前面会导致模式永远无法匹配真实文件名
  • 缺少正则匹配调用:没有使用re.match()等方法检测文件名是否符合规则
  • 变量未定义:遍历用到的src变量没有赋值,定义的str = 'c:'未被使用
  • 无效规则:java_pt2的规则完全不符合给出的「日期+文件名」命名规范,可直接删除

修正后代码

import re 
import os 
from tqdm import tqdm
from time import sleep 

# 编译正则表达式,$放在末尾匹配完整文件名,.需要转义避免匹配任意字符
python_pt = re.compile(r"^[0-3]?[0-9]-[0-3]?[0-9]-(?:[0-9]{2})?[0-9]{2} python\.pdf$")
java_pt = re.compile(r"^[0-3]?[0-9]-[0-3]?[0-9]-(?:[0-9]{2})?[0-9]{2} java\.pdf$")
# 定义扫描根目录
src = r"c:"
python_count = 0
java_count = 0

for dirpath, dirnames, files in os.walk(src, topdown=True):         
    print(f'\nFound directory: {dirpath}\n')
    
    for file in tqdm(files):
        sleep(.1)
        # 仅扫描根目录下的文件,和原代码逻辑保持一致
        if dirpath == src:
            if python_pt.match(file):
                python_count +=1
            elif java_pt.match(file):
                java_count +=1

print(f"Python类PDF文件数量:{python_count}\n")
print(f"Java类PDF文件数量:{java_count}\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:15:03