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

在Python中使用fnmatch模块进行文件名过滤

发布时间:2024-01-18 07:40:48

在Python中,我们可以使用fnmatch模块来进行文件名的过滤和匹配。该模块提供了一些函数,例如fnmatch()和filter(),用于根据文件名的模式匹配来过滤文件。

以下是使用fnmatch模块进行文件名过滤的一些示例:

1. fnmatch()函数:

fnmatch()函数用于检查一个字符串是否与给定的模式匹配。它接受两个参数:字符串和模式,返回一个布尔值表示匹配结果。

import fnmatch

# 检查字符串是否与模式匹配
result = fnmatch.fnmatch('image.jpg', '*.jpg')

# 输出结果
print(result)  # True

在上面的示例中,我们使用fnmatch()函数检查字符串'image.jpg'是否与模式'*.jpg'匹配。由于字符串以'.jpg'结尾,匹配结果为True。

2. filter()函数:

filter()函数用于过滤给定目录中与给定模式匹配的文件名。它接受两个参数:模式和目录路径,返回一个与模式匹配的文件名列表。

import fnmatch
import os

# 过滤目录中与模式匹配的文件名
files = fnmatch.filter(os.listdir('.'), '*.txt')

# 输出结果
for file in files:
    print(file)

在上面的示例中,我们使用filter()函数过滤当前目录中与模式'*.txt'匹配的文件名,并将它们存储在一个列表中。然后,我们使用循环遍历列表并打印每个匹配的文件名。

3. fnmatchcase()函数:

fnmatchcase()函数与fnmatch()函数类似,但它区分大小写。它接受两个参数:字符串和模式,返回一个布尔值表示匹配结果。

import fnmatch

# 检查大小写敏感的字符串与模式是否匹配
result = fnmatch.fnmatchcase('Image.jpg', '*.jpg')

# 输出结果
print(result)  # False

在上面的示例中,我们使用fnmatchcase()函数检查字符串'Image.jpg'是否与模式'*.jpg'匹配。由于字符串中的大小写不匹配,匹配结果为False。

4. filterfalse()函数:

filterfalse()函数与filter()函数类似,但它返回与给定模式不匹配的文件名列表。

import fnmatch
import os

# 过滤目录中与模式不匹配的文件名
files = fnmatch.filterfalse(fnmatch.fnmatch, os.listdir('.'), '*.txt')

# 输出结果
for file in files:
    print(file)

在上面的示例中,我们使用filterfalse()函数过滤当前目录中与模式'*.txt'不匹配的文件名,并将它们存储在一个列表中。然后,我们使用循环遍历列表并打印每个不匹配的文件名。

总结:

fnmatch模块提供了几个函数来进行文件名过滤和匹配,使我们能够根据特定模式过滤目录中的文件。fnmatch()函数用于检查字符串与模式是否匹配,filter()函数用于过滤与模式匹配的文件名列表,fnmatchcase()函数在匹配时区分大小写,而filterfalse()函数返回不匹配模式的文件名列表。这些函数在数据处理、文件系统操作等方面都很有用。