Python中glob模块的基本用法和示例
glob模块是Python提供的一个文件模式匹配工具,它可以根据指定的文件模式获取符合条件的文件路径。它支持类似于正则表达式的通配符,如*、?、[]等。
glob模块中最常用的函数是glob()函数。该函数接受一个文件模式作为参数,并返回所有符合该模式的文件路径列表。下面是glob模块的基本用法和示例:
1. 导入glob模块
要使用glob模块,首先需要导入它。
import glob
2. 使用glob()函数匹配文件路径
glob()函数接受一个文件模式作为参数,并返回所有符合该模式的文件路径列表。文件模式可以包含通配符*、?、[]等,用于匹配文件名中的字符。
下面是一个例子,查找当前目录下所有以.py结尾的文件:
files = glob.glob('*.py')
print(files)
输出结果类似于:
['example1.py', 'example2.py', 'example3.py']
3. 使用通配符
通配符*匹配任意多个字符,?匹配一个字符,[]用于指定一个字符集合。可以通过组合使用这些通配符来匹配特定的文件。
下面是一个例子,查找当前目录下所有以数字开头并以.py结尾的文件:
files = glob.glob('[0-9]*.py')
print(files)
输出结果类似于:
['1_example.py', '2_example.py', '3_example.py']
4. 递归匹配子目录
glob模块还支持递归匹配子目录,可以使用**通配符来匹配任意多级子目录。
下面是一个例子,查找当前目录及其子目录下所有以.py结尾的文件:
files = glob.glob('**/*.py', recursive=True)
print(files)
输出结果类似于:
['example1.py', 'example2.py', 'example3.py', 'subdir/example4.py', 'subdir/example5.py']
可以看到,除了当前目录下的文件,还匹配了子目录下的文件。
5. 使用fnmatch模块扩展匹配
glob模块内部使用了fnmatch模块来实现通配符匹配。如果需要扩展匹配的功能,可以使用fnmatch模块的fnmatch()函数来进行文件名匹配。
下面是一个例子,使用fnmatch()函数查找当前目录下所有以.py结尾的文件:
import fnmatch
files = [file for file in os.listdir('.') if fnmatch.fnmatch(file, '*.py')]
print(files)
输出结果与上述glob()函数的结果相同。
总结:
glob模块是Python提供的一个简单、易用的文件模式匹配工具。通过使用通配符和递归匹配,可以方便地获取符合条件的文件路径列表。同时,使用fnmatch模块可以对文件名进行自定义的匹配。
