用Python的glob模块查找文件路径名
大家好,我素洪小帅~
glob
模块是Python的一个标准库模块,用于查找符合特定规则的文件路径名,它支持使用通配符来匹配文件。glob
模块可以方便地列出文件目录中的文件,并对文件名进行模式匹配。
基本用法
-
导入模块:
import glob
-
使用通配符匹配文件
*
:匹配零个或多个字符。?
:匹配一个字符。[]
:匹配括号中指定范围或字符集合中的一个字符。
示例
-
列出目录中所有的文件
使用glob()
方法来列出当前目录下所有的.txt
文件:import glob files = glob.glob('*.txt') print(files)
这将列出当前目录下所有扩展名为
.txt
的文件。 -
匹配特定的文件路径
可以指定路径以及通配符来匹配文件,例如,列出某个子目录中的.csv
文件:files = glob.glob('/path/to/directory/*.csv') print(files)
-
递归查找文件
如果需要递归查找目录中的文件,可以使用**
作为通配符,并传递recursive=True
参数。例如,列出当前目录及所有子目录中的.txt
文件:files = glob.glob('**/*.txt', recursive=True) print(files)
这将列出当前目录及其所有子目录中所有的
.txt
文件。 -
匹配文件的前缀或后缀
使用*
来匹配文件名前缀或后缀。例如,查找所有以data
开头并以.csv
结尾的文件:files = glob.glob('data*.csv') print(files)
-
使用字符范围
如果你想匹配某一范围的文件名,可以使用方括号。例如,列出所有以a
到c
之间的字符开头的.txt
文件:files = glob.glob('[a-c]*.txt') print(files)
这将列出以
a
、b
、c
开头的.txt
文件。 -
列出所有文件和子目录
可以不指定任何模式来列出所有文件和子目录:files = glob.glob('*') print(files)
这将列出当前目录下的所有文件和文件夹。
glob
的函数
glob.glob(pathname, recursive=False)
:返回所有匹配pathname
的路径名。支持通配符。glob.iglob(pathname, recursive=False)
:与glob()
相同,但返回一个迭代器。适合处理大型文件列表,不会一次性加载所有结果到内存。
示例:使用 iglob()
处理大型文件
import glob
# 使用 iglob 来避免一次性加载所有文件
for filename in glob.iglob('**/*.txt', recursive=True):
print(filename)
总结
*
:匹配零个或多个字符。?
:匹配一个字符。[]
:匹配一个字符范围或集合。glob()
:返回匹配的文件路径列表。iglob()
:返回匹配的文件路径迭代器,适用于大数据集。