Python glob模块
在Python中,glob
模块是一个用于查找与特定模式匹配的路径名的工具。它与操作系统命令中的glob
函数非常相似,可以帮助我们在文件系统中快速查找符合特定规则的文件。
1. glob模块的基本用法
glob
模块提供了一个glob
函数,其语法如下:
glob.glob(pathname, recursive=False)
pathname
参数是一个包含了要匹配规则的路径字符串,可以使用通配符*
和?
。recursive
参数是一个布尔值,指示是否递归搜索子目录。默认为False
。
让我们通过一个简单的示例来演示glob
模块的基本用法。假设我们有一个文件夹files
,其中包含了一些文本文件:
files/
├── file1.txt
├── file2.txt
├── subfolder/
├── file3.txt
└── file4.txt
现在我们想要找出所有以.txt
结尾的文件,可以使用glob
模块来实现:
import glob
txt_files = glob.glob('files/*.txt')
for file in txt_files:
print(file)
运行以上代码,输出如下:
files/file1.txt
files/file2.txt
2. 使用通配符进行匹配
glob
模块支持通配符*
和?
,可以帮助我们更精确地匹配文件名。下面是一些常用的通配符用法:
*
:匹配零个或多个字符。?
:匹配任意单个字符。[]
:匹配指定范围内的字符。
让我们通过一个示例来演示这些通配符的用法。假设我们想要找出所有以file1
或file2
开头的文件,可以使用通配符*
:
import glob
files = glob.glob('files/file[12]*.txt')
for file in files:
print(file)
运行以上代码,输出如下:
files/file1.txt
files/file2.txt
3. 递归搜索子目录
通过设置recursive=True
参数,我们可以在子目录中递归搜索文件。让我们继续使用之前的文件目录结构,并尝试在所有子目录中查找.txt
文件:
import glob
txt_files = glob.glob('files/**/*.txt', recursive=True)
for file in txt_files:
print(file)
运行以上代码,输出如下:
files/file1.txt
files/file2.txt
files/subfolder/file3.txt
files/subfolder/file4.txt
4. 总结
glob
模块是一个方便的工具,可以帮助我们在文件系统中快速查找符合特定规则的文件。通过使用通配符和递归搜索功能,我们可以更灵活地定位目标文件。