Python文件路径模式匹配glob模块使用详解

 更新时间:2025年04月18日 09:38:44   作者:tekin  
这篇文章主要介绍了Python文件路径模式匹配glob模块使用的相关资料,glob模块是Python中用于文件和目录查找的工具,支持使用通配符进行模糊匹配,它可以处理简单的文件名模式,并通过glob和iglob两个函数实现文件路径的模式匹配,需要的朋友可以参考下

一、glob 模块概述

glob 模块可根据指定的模式来查找文件和目录,它支持使用通配符进行模糊匹配。主要通过 glob 和 iglob 两个函数来实现文件路径的模式匹配,能处理简单的文件名模式,如 *.txt 可匹配所有扩展名为 .txt 的文件。

二、通配符规则

(一)* 通配符

  • 功能:匹配任意数量(包括零个)的任意字符。
  • 示例
import glob

# 匹配当前目录下所有扩展名为 .txt 的文件
txt_files = glob.glob('*.txt')
for file in txt_files:
    print(file)

上述代码中,*.txt 表示匹配当前目录下文件名任意,但扩展名为 .txt 的所有文件。

(二)? 通配符

  • 功能:匹配单个任意字符。
  • 示例
import glob

# 匹配当前目录下文件名只有一个字符且扩展名为 .py 的文件
single_char_py_files = glob.glob('?.py')
for file in single_char_py_files:
    print(file)

这里,?.py 表示文件名只有一个字符,扩展名为 .py 的文件。

(三)[] 通配符

  • 功能:匹配方括号内指定的任意一个字符。

  • 示例

import glob

# 匹配当前目录下文件名以 a 或 b 开头且扩展名为 .txt 的文件
ab_txt_files = glob.glob('[ab]*.txt')
for file in ab_txt_files:
    print(file)

[ab]*.txt 表示文件名以 a 或 b 开头,扩展名为 .txt 的文件。

(四)** 通配符(递归匹配)

  • 功能:在路径中使用 ** 表示递归匹配目录。在 Python 3.5 及以上版本支持。
  • 示例
import glob

# 递归匹配当前目录及其子目录下所有扩展名为 .txt 的文件
all_txt_files = glob.glob('**/*.txt', recursive=True)
for file in all_txt_files:
    print(file)

**/*.txt 结合 recursive=True 会递归查找当前目录及其所有子目录下的 .txt 文件。

三、glob 函数

(一)glob.glob(pathname, *, recursive=False)

  • 功能:返回一个符合指定模式的文件和目录路径列表。

  • 参数:

    • pathname:要匹配的路径模式。
    • recursive:是否进行递归匹配,默认为 False。当设置为 True 时,支持使用 ** 通配符进行递归查找。
  • 示例

import glob

# 匹配当前目录及其子目录下所有以 test 开头的文件
test_files = glob.glob('**/test*', recursive=True)
for file in test_files:
    print(file)

四、iglob 函数

(一)glob.iglob(pathname, *, recursive=False)

  • 功能:返回一个迭代器,该迭代器会逐个产生符合指定模式的文件和目录路径。
  • 参数:与 glob.glob 相同。
  • 示例
import glob

# 使用 iglob 迭代匹配当前目录下所有 .py 文件
py_files_iter = glob.iglob('*.py')
for file in py_files_iter:
    print(file)

iglob 适合处理大量匹配结果的情况,因为它不会一次性生成所有匹配结果,而是逐个产生,节省内存。

五、glob 与其他文件查找方式的对比

查找方式优点缺点适用场景
glob 模块使用简单,支持通配符匹配,能快速查找符合模式的文件和目录。模式匹配功能相对简单,不支持复杂的正则表达式匹配。简单的文件和目录查找,如按扩展名、文件名前缀等查找。
os.walk 函数可以递归遍历目录树,能详细控制遍历过程。需要手动编写代码进行文件筛选,使用相对复杂。需要对目录树进行深度遍历和复杂筛选的场景。
re 模块(正则表达式)支持复杂的模式匹配,功能强大。学习成本较高,代码相对复杂。需要进行复杂文件名模式匹配的场景。

六、应用场景

(一)批量文件处理

可以使用 glob 模块查找符合特定模式的文件,然后对这些文件进行批量处理,如批量重命名、批量读取文件内容等。

import glob

# 批量重命名当前目录下所有 .txt 文件
txt_files = glob.glob('*.txt')
for file in txt_files:
    new_name = file.replace('.txt', '_new.txt')
    import os
    os.rename(file, new_name)

(二)数据收集

在进行数据收集时,可能需要从多个文件中读取数据。可以使用 glob 模块查找相关文件,然后读取数据。

import glob

# 读取当前目录及其子目录下所有 .csv 文件的数据
csv_files = glob.glob('**/*.csv', recursive=True)
for file in csv_files:
    with open(file, 'r') as f:
        data = f.read()
        print(f"Data from {file}: {data[:100]}...")

文章总结

glob 模块为 Python 开发者提供了一种便捷的文件和目录查找方式,通过使用 Unix 风格的通配符规则,能快速定位符合特定模式的文件和目录。glob.glob 函数返回匹配结果列表,glob.iglob 函数返回迭代器,适用于不同的应用场景。在简单的文件查找和批量处理任务中,glob 模块是一个非常实用的工具。

到此这篇关于Python文件路径模式匹配glob模块使用的文章就介绍到这了,更多相关Python文件路径模式匹配glob模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pygame框架实现飞机大战

    Pygame框架实现飞机大战

    这篇文章主要为大家详细介绍了Pygame框架实现飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • pandas取出重复数据的方法

    pandas取出重复数据的方法

    今天小编就为大家分享一篇pandas取出重复数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python3让print输出不换行的方法

    python3让print输出不换行的方法

    在本篇内容里小编给大家整理的是关于python3让print输出不换行的方法,有需要的朋友们可以学习参考下。
    2020-08-08
  • Python+Pygame绘制小球的实例详解

    Python+Pygame绘制小球的实例详解

    这篇文章主要为大家详细介绍了如何利用Python Pygame绘制小球(渐变大的小球、自由下落的小球、循环上下反弹的小球),感兴趣的小伙伴可以了解一下
    2022-10-10
  • Python利用sqlacodegen自动生成ORM实体类示例

    Python利用sqlacodegen自动生成ORM实体类示例

    这篇文章主要介绍了Python利用sqlacodegen自动生成ORM实体类,结合实例形式分析了Python sqlacodegen安装技巧ORM实体类相关实现技巧,需要的朋友可以参考下
    2019-06-06
  • pandas处理csv文件的方法步骤

    pandas处理csv文件的方法步骤

    这篇文章主要介绍了pandas处理csv文件的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Tensorflow分类器项目自定义数据读入的实现

    Tensorflow分类器项目自定义数据读入的实现

    这篇文章主要介绍了Tensorflow分类器项目自定义数据读入的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • 利用 Python 实现随机相对强弱指数 StochRSI

    利用 Python 实现随机相对强弱指数 StochRSI

    随机相对强弱指数简称为StochRSI,是一种技术分析指标,用于确定资产是否处于超买或超卖状态,也用于确定当前市场的态势。本篇文章小编九来为大家介绍随机相对强弱指数简称为StochRSI,需要的朋友可以参考下面文章的具体内容
    2021-09-09
  • Python+Pygame实战之疯狂吃水果游戏的实现

    Python+Pygame实战之疯狂吃水果游戏的实现

    吃豆人和切水果这两个游戏相信大家都不陌生吧,本文将利用Python中的Pygame模块编写出一款结合吃豆人+切水果的新游戏:疯狂吃水果,感兴趣的可以了解一下
    2022-06-06
  • 提升Python编程效率的列表操作方法示例

    提升Python编程效率的列表操作方法示例

    这篇文章主要为大家介绍了提升Python编程效率的列表操作方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10

最新评论