Python使用glob库批量匹配文件路径

Written by

in

文章目录
  • glob 是 Python 的标准库之一,无需额外安装,专门用于文件名的模式匹配搜索。它的名字来源于 Unix shell 命令中的“globbing”,意思是使用通配符进行匹配。
  • glob 使用与 shell 类似的通配符规则: 通配符 含义 示例 * 匹配任意长度的任意字符 *.txt 匹配所有 .txt ? 匹配任意一个字符 file?.txt 匹配 file1.txt, fileA.txt [] 匹配指定范围内的任一字符 file[1-3].txt 匹配 file1.txt, file2.txt, file3.txt ** 匹配任意目录(需开启递归) **/*.py 匹配任意子目录中的 .py 文件(需设置 recursive=True)
  • 从 Python 3.5 开始,glob 支持递归模式: files = glob.glob(“**/*.py”, recursive=True) 这会在当前目录及其所有子目录中查找 .py 文件。 默认情况下 ** 不递归,必须显式设置 recursive=True。
  • import glob from PIL import Image image_paths = glob.glob(“images/**/*.jpg”, recursive=True) for path in image_paths: img = Image.open(path) print(f”{path}: {img.size}”)
  • 特性 glob os.listdir pathlib 通配符匹配 支持 不支持,需要手动过滤 支持 .glob() 递归搜索 支持 (**) 需手动递归遍历 rglob() 更简洁 返回类型 str 列表 str 列表 Path 对象生成器 使用习惯 类 Unix shell 风格 简单、通用 面向对象、现代化 建议在新项目中逐渐迁移至 pathlib,但 glob 的通配能力仍不可替代。
  • glob 是处理文件路径批量操作的利器 支持通配符、递归、灵活组合 可与 os、pathlib、PIL、shutil 等库组合处理复杂任务 对于大规模目录扫描,推荐使用 pathlib.rglob() 更高效 以上就是Python使用glob库批量匹配文件路径的详细内容,更多关于Python glob匹配文件路径的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: Python文件路径模式匹配glob模块使用详解 浅析Python中global和nonlocal关键字的妙用 Python中glob.glob()函数的使用 python用glob模块匹配路径的方法详解 python之glob的用法详解
  • 目录
    • 一、glob 模块简介
      • 常见应用场景包括:
    • 二、通配符模式基础
      • 三、基本用法
        • 3.1 查找当前目录下的所有 .txt 文件
        • 3.2 匹配指定路径中的图像文件
        • 3.3 匹配多个后缀名(结合列表推导)
      • 四、递归查找子目录文件(**)
        • 五、与 os.path、pathlib 联合使用
          • 5.1 获取文件名或绝对路径
          • 5.2 使用 pathlib 更优雅地处理路径
        • 六、高级使用技巧
          • 6.1 查找以数字开头的文件
          • 6.2 多级目录下查找 .png 图像
          • 6.3 排除某些文件(结合 fnmatch 或过滤器)
        • 七、实战案例:批量读取图片并处理
          • 八、glob vs os.listdir vs pathlib
            • 九、常见问题与误区
              • 9.1 glob 不返回文件?
              • 9.2 无法匹配隐藏文件?
            • 十、总结与最佳实践

              glob 是 Python 的标准库之一,无需额外安装,专门用于文件名的模式匹配搜索。它的名字来源于 Unix shell 命令中的“globbing”,意思是使用通配符进行匹配。

              • 批量读取某个目录下的图片、文本、日志等文件
              • 在子目录中递归查找特定类型的文件
              • 配合 os 或 shutil 实现批量文件复制、删除、重命名等操作

              glob 使用与 shell 类似的通配符规则:

              通配符 含义 示例
              * 匹配任意长度的任意字符 *.txt 匹配所有 .txt
              ? 匹配任意一个字符 file?.txt 匹配 file1.txtfileA.txt
              [] 匹配指定范围内的任一字符 file[1-3].txt 匹配 file1.txtfile2.txtfile3.txt
              ** 匹配任意目录(需开启递归) **/*.py 匹配任意子目录中的 .py 文件(需设置 recursive=True

              import glob
              
              files = glob.glob("*.txt")
              print(files)
              # 输出示例: ['data1.txt', 'report.txt']
              

              image_files = glob.glob("images/*.jpg")
              

              files = glob.glob("data/*.csv") + glob.glob("data/*.xlsx")
              

              从 Python 3.5 开始,glob 支持递归模式:

              files = glob.glob("**/*.py", recursive=True)
              

              这会在当前目录及其所有子目录中查找 .py 文件。

              默认情况下 ** 不递归,必须显式设置 recursive=True。

              import os
              
              for file in glob.glob("logs/*.log"):
                  print("文件名:", os.path.basename(file))
                  print("绝对路径:", os.path.abspath(file))
              

              from pathlib import Path
              
              files = Path("data").glob("*.txt")
              for file in files:
                  print(file.name, file.stem, file.suffix)
              

              glob.glob("[0-9]*.txt")
              

              glob.glob("*/**/*.png", recursive=True)
              

              import fnmatch
              
              files = [f for f in glob.glob("data/*.csv") if not fnmatch.fnmatch(f, "data/test_*.csv")]
              

              import glob
              from PIL import Image
              
              image_paths = glob.glob("images/**/*.jpg", recursive=True)
              
              for path in image_paths:
                  img = Image.open(path)
                  print(f"{path}: {img.size}")
              

              特性 glob os.listdir pathlib
              通配符匹配 支持 不支持,需要手动过滤 支持 .glob()
              递归搜索 支持 (**) 需手动递归遍历 rglob() 更简洁
              返回类型 str 列表 str 列表 Path 对象生成器
              使用习惯 类 Unix shell 风格 简单、通用 面向对象、现代化

              建议在新项目中逐渐迁移至 pathlib,但 glob 的通配能力仍不可替代。

              • 检查路径是否正确(相对/绝对路径)
              • 注意区分大小写(特别是 Linux)
              • **/*.py 要配合 recursive=True

              glob("*") 默认不会匹配以 . 开头的文件,需要明确指定:

              glob.glob(".*")  # 匹配隐藏文件
              

              • glob 是处理文件路径批量操作的利器
              • 支持通配符、递归、灵活组合
              • 可与 ospathlibPILshutil 等库组合处理复杂任务
              • 对于大规模目录扫描,推荐使用 pathlib.rglob() 更高效

              以上就是Python使用glob库批量匹配文件路径的详细内容,更多关于Python glob匹配文件路径的资料请关注风君子博客其它相关文章!

              您可能感兴趣的文章:

              • Python文件路径模式匹配glob模块使用详解
              • 浅析Python中global和nonlocal关键字的妙用
              • Python中glob.glob()函数的使用
              • python用glob模块匹配路径的方法详解
              • python之glob的用法详解

              站内搜索