您的位置 首页 知识

python文件路径操作 Python文件路径模式匹配glob模块使用详解 py

python文件路径操作 Python文件路径模式匹配glob模块使用详解 py

目录
  • 一、glob模块概述
  • 二、通配符制度
    • (一)*通配符
    • (二)?通配符
    • (三)[]通配符
    • (四)通配符(递归匹配)
  • 三、glob函数
    • (一)glob.glob(pathname, *, recursive=False)
  • 四、iglob函数
    • (一)glob.iglob(pathname, *, recursive=False)
  • 五、glob与其他文件查找方式的对比
    • 六、应用场景
      • (一)批量文件处理
      • (二)数据收集
    • 划重点时刻

      一、glob模块概述

      glob模块可根据指定的模式来查找文件和目录,它支持使用通配符进行模糊匹配。主要通过globiglob两个函数来实现文件路径的模式匹配,能处理简单的文件名模式,如*.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表示文件名以ab开头,扩展名为.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模块内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

      无论兄弟们可能感兴趣的文章:

      • 简单掌握Python中glob模块查找文件路径的用法
      • Python模块glob函数示例详解教程
      • Python 专题六 局部变量、全局变量global、导入模块变量
      • 在Python中使用glob模块查找文件路径的技巧
      • python通配符之glob模块的使用详解
      • python里glob模块聪明点拓展资料
      • Python文件处理、os模块、glob模块
      • python用glob模块匹配路径的技巧详解