1.什么是glob模块?
-
在 Python 中,
glob模块是一个用于文件路径名的模式匹配的工具。它使用简单的通配符规则来匹配文件和目录的路径,这些通配符规则类似于在命令行中使用的文件搜索规则。这使得在处理文件系统中的多个文件或目录时非常方便,可以快速地获取符合特定模式的文件路径列表。
2. 通配符规则
*(星号)通配符- 示例:假设在当前目录下有
file1.txt、file2.txt、data.csv和report.docx这些文件。使用glob.glob('*.txt')将返回['file1.txt', 'file2.txt'],它只会匹配扩展名为.txt的文件。 - 功能:
*可以匹配任意长度(包括零长度)的字符序列。例如,*.txt表示匹配所有以.txt为扩展名的文件,不管文件名的前面部分是什么。
?(问号)通配符-
功能:
?可以匹配任意单个字符。例如,file?.txt会匹配像file1.txt、file2.txt等文件名,其中?的位置可以是任意一个字符。 -
示例:如果有
file1.txt、file2.txt、fileA.txt和data.txt这些文件,glob.glob('file?.txt')将返回['file1.txt', 'file2.txt', 'fileA.txt'],它匹配文件名是file后面跟着一个字符且扩展名为.txt的文件。
-
[](方括号)通配符-
功能:
[]用于匹配方括号内指定的一组字符中的任意一个。例如,file[123].txt会匹配file1.txt、file2.txt和file3.txt。 -
示例:假设有
file1.txt、file2.txt、file4.txt和fileA.txt这些文件,glob.glob('file[123].txt')将返回['file1.txt', 'file2.txt'],只匹配文件名中file后面跟着1、2或3且扩展名为.txt的文件。
-
3.glob模块的主要函数
-
-
glob.glob()函数 - 功能:该函数返回所有匹配指定模式的文件路径的列表。它接受一个表示路径模式的字符串作为参数,在当前目录以及子目录(如果模式包含目录遍历相关的部分)中搜索匹配的文件路径。
- 示例:搜索当前目录下所有的 Python 文件:
-
import glob
python_files = glob.glob('*.py')
print(python_files)
搜索指定目录下(例如data目录)所有的.csv文件:
import glob
csv_files_in_data_dir = glob.glob('data/*.csv')
print(csv_files_in_data_dir)
glob.iglob()函数
- 功能:这是一个生成器函数,它与
glob.glob()类似,用于返回匹配指定模式的文件路径。但是,它返回的是一个生成器对象,而不是一个列表。这样在处理大量文件路径时,可以节省内存,因为生成器是按需生成元素的,而不是一次性生成所有元素。 - 示例:
import glob
for file_path in glob.iglob('*.jpg'):
print(file_path)
这个示例会逐个打印出当前目录下所有匹配*.jpg模式的文件路径,而不是将所有路径存储在一个列表中再处理。
使用glob模块的注意事项
-
路径的相对性质:
glob函数所使用的路径模式是相对路径,默认是相对于当前工作目录的。如果需要指定绝对路径,需要在模式字符串中提供完整的路径信息。例如,要搜索根目录下的/var/log目录中的.log文件,可以使用glob.glob('/var/log/*.log')。 -
目录的遍历:当模式中包含目录遍历部分(如
**)时,要注意性能问题。例如,**/*.txt会遍历当前目录及其所有子目录来查找.txt文件,这在目录结构复杂且文件数量众多时可能会消耗较多的时间和资源。在 Python 3.5 及以上版本中,**用于递归地匹配目录。 -
区分大小写:在大多数操作系统中,
glob模块的匹配是区分大小写的。例如,*.TXT不会匹配名为file.txt的文件,只会匹配扩展名为.TXT的文件(如果有的话)。
















![[卫星遥感] 解密卫星目标跟踪:挑战与突破的深度剖析](https://i-blog.csdnimg.cn/direct/87787d6d2658497cbda48e8741f1381a.png)

