欢迎访问宙启技术站
智能推送

Python中glob模块的基本用法和示例

发布时间:2023-12-25 11:56:10

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模块可以对文件名进行自定义的匹配。