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

 更新时间:2025年06月11日 10:24:07   作者:萧鼎  
在 Python 中处理文件路径时,尤其是批量查找满足特定模式的文件,glob 是一个非常实用的标准库,它使用类似 Unix Shell 的通配符规则,帮助你轻松完成文件路径的匹配工作,本文将深入介绍 Python 的 glob 模块,从基本语法到实际应用,需要的朋友可以参考下

一、glob 模块简介

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

三、基本用法

3.1 查找当前目录下的所有 .txt 文件

import glob

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

3.2 匹配指定路径中的图像文件

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

3.3 匹配多个后缀名(结合列表推导)

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

四、递归查找子目录文件(**)

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

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

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

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

五、与 os.path、pathlib 联合使用

5.1 获取文件名或绝对路径

import os

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

5.2 使用 pathlib 更优雅地处理路径

from pathlib import Path

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

六、高级使用技巧

6.1 查找以数字开头的文件

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

6.2 多级目录下查找 .png 图像

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

6.3 排除某些文件(结合 fnmatch 或过滤器)

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 vs os.listdir vs pathlib

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

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

九、常见问题与误区

9.1 glob 不返回文件?

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

9.2 无法匹配隐藏文件?

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

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

十、总结与最佳实践

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

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

相关文章

  • 在Python中如何使用yield

    在Python中如何使用yield

    在 Python 开发中,yield 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构、协程与并发都会用到它,文中详细介绍了yield的用法,需要的朋友可以参考下
    2021-06-06
  • 在Django同1个页面中的多表单处理详解

    在Django同1个页面中的多表单处理详解

    这篇文章主要给大家介绍了在Django同1个页面中的多表单处理的相关资料,文章先给大家介绍了如何快速上手Django实现项目的方法,方便让大家理解和学习,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • python 容器总结整理

    python 容器总结整理

    这篇文章主要介绍了python 容器总结整理的相关资料,需要的朋友可以参考下
    2017-04-04
  • 使用Python将PDF表格提取到文本,CSV和Excel文件中

    使用Python将PDF表格提取到文本,CSV和Excel文件中

    本文将介绍如何使用简单的Python代码从PDF文档中提取表格数据并将其写入文本、CSV和Excel文件,从而轻松实现PDF表格的自动化提取,有需要的可以参考下
    2024-11-11
  • python深入讲解魔术方法

    python深入讲解魔术方法

    所谓魔法函数(Magic Methods),是Python的⼀种⾼级语法,允许你在类中⾃定义函数(函数名格式⼀般为__xx__),并绑定到类的特殊⽅法中。⽐如在类A中⾃定义__str__()函数,则在调⽤str(A())时,会⾃动调⽤__str__()函数,并返回相应的结果
    2022-06-06
  • 使用python创建股票的时间序列可视化分析

    使用python创建股票的时间序列可视化分析

    这篇文章主要为大家详细介绍了python创建股票的时间序列可视化分析,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 使用matplotlib动态刷新指定曲线实例

    使用matplotlib动态刷新指定曲线实例

    这篇文章主要介绍了使用matplotlib动态刷新指定曲线实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python生成器next方法和send方法区别详解

    Python生成器next方法和send方法区别详解

    这篇文章主要介绍了Python生成器next方法和send方法区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 基于OpenCV和Gradio实现简单的人脸识别详解

    基于OpenCV和Gradio实现简单的人脸识别详解

    这篇文章主要为大家详细介绍了如何基于OpenCV和Gradio实现简单的人脸识别功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-04-04
  • 深入浅出分析Python装饰器用法

    深入浅出分析Python装饰器用法

    这篇文章主要介绍了Python装饰器用法,结合实例形式对比分析了Python装饰器的定义与使用技巧,需要的朋友可以参考下
    2017-07-07

最新评论