如何使用 Python 的 glob 模块按模式查找文件

Python 中的 glob 模块是一个强大的工具,可用于查找符合指定模式的文件和目录。当您需要在目录中搜索具有特定扩展名或名称的文件时,它特别有用。本文将指导您使用 glob 模块高效地查找文件。

glob 模块简介

glob 模块提供了一种使用 Unix shell 样式通配符列出文件和目录的方法。这对于文件搜索、批处理等任务非常有用。该模块包含允许您将文件名与模式匹配的函数,使文件管理更加容易。

glob 的基本用法

要使用 glob 模块,您需要导入它,然后使用 glob.glob() 函数查找与模式匹配的文件。您使用的模式可以包括通配符,例如 *(匹配任意数量的字符)和 ?(匹配单个字符)。

示例

查找具有特定扩展名的文件

例如,要查找目录中所有带有 .txt 扩展名的文件,可以使用:

import glob

# Find all .txt files in the current directory
txt_files = glob.glob('*.txt')
print(txt_files)

在子目录中查找文件

要查找子目录中具有特定扩展名的所有文件,请在模式中指定子目录:

import glob

# Find all .jpg files in the 'images' subdirectory
jpg_files = glob.glob('images/*.jpg')
print(jpg_files)

使用通配符

通配符可以帮助您匹配更广泛的文件。例如,要查找以 "report" 开头的所有文本文件:

import glob

# Find all files starting with 'report' and ending with .txt
report_files = glob.glob('report*.txt')
print(report_files)

查找具有多个扩展名的文件

您还可以使用 glob 通过使用包含多个通配符匹配的模式来查找具有多个扩展名的文件:

import glob

# Find all .txt and .md files
files = glob.glob('*.txt') + glob.glob('*.md')
print(files)

高级用法

除了简单模式外,glob 模块还支持更复杂的模式。例如,您可以使用 ** 之类的模式来递归搜索目录。

递归搜索

要在所有子目录中递归搜索文件,请使用 ** 模式以及 recursive=True 参数:

import glob

# Find all .py files in the current directory and subdirectories
py_files = glob.glob('**/*.py', recursive=True)
print(py_files)

结论

glob 模块是 Python 中管理文件的重要工具,可让您轻松使用模式搜索文件。无论您是处理特定文件类型、搜索目录还是执行复杂搜索,glob 都能提供简单有效的解决方案。