it编程 > 前端脚本 > Python

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

7人参与 2025-06-11 Python

一、glob 模块简介

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

常见应用场景包括:

二、通配符模式基础

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 不返回文件?

9.2 无法匹配隐藏文件?

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

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

十、总结与最佳实践

以上就是python使用glob库批量匹配文件路径的详细内容,更多关于python glob匹配文件路径的资料请关注代码网其它相关文章!

(0)

您想发表意见!!点此发布评论

推荐阅读

Python中dict遍历的方法详解

06-11

Python标准库中email模块的使用方法与内部机制详解

06-11

Python主动抛出异常的各种用法和场景分析

06-11

Python使用sort()方法对数组进行排序的操作指南

06-11

Python编写邮件自动发送工具的完整指南

06-11

一文全面详解Python变量作用域

06-11

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论