• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: Error | 发布时间: 2025-6-17 08:13| 查看数: 119| 评论数: 0|帖子模式

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

    二、通配符规则


    (一)* 通配符


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

    2. # 匹配当前目录下所有扩展名为 .txt 的文件
    3. txt_files = glob.glob('*.txt')
    4. for file in txt_files:
    5.     print(file)
    复制代码
    上述代码中,
    1. *.txt
    复制代码
    表示匹配当前目录下文件名任意,但扩展名为
    1. .txt
    复制代码
    的所有文件。

    (二)? 通配符


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

    2. # 匹配当前目录下文件名只有一个字符且扩展名为 .py 的文件
    3. single_char_py_files = glob.glob('?.py')
    4. for file in single_char_py_files:
    5.     print(file)
    复制代码
    这里,
    1. ?.py
    复制代码
    表示文件名只有一个字符,扩展名为
    1. .py
    复制代码
    的文件。

    (三)[] 通配符


    • 功能:匹配方括号内指定的任意一个字符。
    • 示例
    1. import glob

    2. # 匹配当前目录下文件名以 a 或 b 开头且扩展名为 .txt 的文件
    3. ab_txt_files = glob.glob('[ab]*.txt')
    4. for file in ab_txt_files:
    5.     print(file)
    复制代码
    1. [ab]*.txt
    复制代码
    表示文件名以
    1. a
    复制代码
    1. b
    复制代码
    开头,扩展名为
    1. .txt
    复制代码
    的文件。

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


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

    2. # 递归匹配当前目录及其子目录下所有扩展名为 .txt 的文件
    3. all_txt_files = glob.glob('**/*.txt', recursive=True)
    4. for file in all_txt_files:
    5.     print(file)
    复制代码
    1. **/*.txt
    复制代码
    结合
    1. recursive=True
    复制代码
    会递归查找当前目录及其所有子目录下的
    1. .txt
    复制代码
    文件。

    三、glob 函数


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


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

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

    • 示例
    1. import glob

    2. # 匹配当前目录及其子目录下所有以 test 开头的文件
    3. test_files = glob.glob('**/test*', recursive=True)
    4. for file in test_files:
    5.     print(file)
    复制代码
    四、iglob 函数


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


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

    2. # 使用 iglob 迭代匹配当前目录下所有 .py 文件
    3. py_files_iter = glob.iglob('*.py')
    4. for file in py_files_iter:
    5.     print(file)
    复制代码
    1. iglob
    复制代码
    适合处理大量匹配结果的情况,因为它不会一次性生成所有匹配结果,而是逐个产生,节省内存。

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

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


    (一)批量文件处理

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

    2. # 批量重命名当前目录下所有 .txt 文件
    3. txt_files = glob.glob('*.txt')
    4. for file in txt_files:
    5.     new_name = file.replace('.txt', '_new.txt')
    6.     import os
    7.     os.rename(file, new_name)
    复制代码
    (二)数据收集

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

    2. # 读取当前目录及其子目录下所有 .csv 文件的数据
    3. csv_files = glob.glob('**/*.csv', recursive=True)
    4. for file in csv_files:
    5.     with open(file, 'r') as f:
    6.         data = f.read()
    7.         print(f"Data from {file}: {data[:100]}...")
    复制代码
    文章总结
    1. glob
    复制代码
    模块为 Python 开发者提供了一种便捷的文件和目录查找方式,通过使用 Unix 风格的通配符规则,能快速定位符合特定模式的文件和目录。
    1. glob.glob
    复制代码
    函数返回匹配结果列表,
    1. glob.iglob
    复制代码
    函数返回迭代器,适用于不同的应用场景。在简单的文件查找和批量处理任务中,
    1. glob
    复制代码
    模块是一个非常实用的工具。
    到此这篇关于Python文件路径模式匹配glob模块使用的文章就介绍到这了,更多相关Python文件路径模式匹配glob模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/python/339863twg.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表