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

如何用pathlib.glob()仅匹配符合*_data模式的目录

用pathlib.glob()精准匹配*_data模式的目录

首先明确:pathlib的glob语法里,**模式末尾加/**是专门用来匹配目录的,理论上不会返回文件。你遇到的问题大概率是操作细节出了问题,下面给你解决思路和正确写法:

  • 正确的当前目录匹配写法
    直接用末尾带斜杠的模式,就能只捞目录,不用额外判断:

    from pathlib import Path
    
    cwd = Path.cwd()
    # 只匹配当前目录下以_data结尾的目录
    data_dirs = list(cwd.glob('*_data/'))
    

    执行这段代码后,data_dirs里应该只有那3个目标目录,不会包含那个同名模式文件。

  • 排查你为啥拿到了文件
    如果你还是拿到了文件,检查这几点:

    1. 确认那个"同名模式文件"的文件名是不是真的不带/——多数操作系统不允许文件名含/,如果是你手动命名时加了,那属于异常情况。
    2. 检查当前工作目录是不是你以为的那个——打印cwd.resolve()看看实际路径,避免跑错了目录。
    3. 有没有可能是符号链接?如果是指向目录的软链接,会被这个模式匹配到,但指向文件的软链接不会。
  • 递归匹配所有子目录里的目标目录
    如果要递归查找所有子目录中的*_data目录,用**通配符加上recursive=True(Python 3.10+可以省略recursive=True,但加上更稳妥):

    data_dirs_recursive = list(cwd.glob('**/*_data/', recursive=True))
    
  • 极端情况的兜底方案
    如果你碰到了低版本Python的bug(比如3.8及以前的小概率问题),可以用生成器表达式做兜底,但这应该是没必要的:

    data_dirs = [p for p in cwd.glob('*_data') if p.is_dir()]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:06:33