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

使用fnmatch模块实现通配符匹配的实例

发布时间:2024-01-18 07:41:38

fnmatch模块是Python中的一个文件名匹配模块,它的作用是根据通配符模式匹配文件名。通配符模式是以一定规则描述的字符串,用来匹配文件名。

下面是一个使用fnmatch模块实现通配符匹配的例子:

import fnmatch

# 示例一:简单的通配符匹配
# 匹配以abc开头的文件名
file_names = ['abc.txt', 'abc123.txt', 'def.txt', 'xyz.doc']
pattern = 'abc*'
matched_files = fnmatch.filter(file_names, pattern)
print("匹配到的文件名:", matched_files)
# 输出:匹配到的文件名: ['abc.txt', 'abc123.txt']

# 示例二:使用多个通配符匹配
# 匹配以abc开头且以.txt或.doc结尾的文件名
file_names = ['abc.txt', 'abc123.txt', 'def.txt', 'xyz.doc']
patterns = ['abc*.txt', 'abc*.doc']
matched_files = []
for pattern in patterns:
    matched_files.extend(fnmatch.filter(file_names, pattern))
print("匹配到的文件名:", matched_files)
# 输出:匹配到的文件名: ['abc.txt', 'abc123.txt', 'xyz.doc']

# 示例三:使用正则表达式匹配
# 匹配以字母a或b开头的文件名
file_names = ['abc.txt', 'abc123.txt', 'def.txt', 'xyz.doc']
pattern = '[ab]*'
matched_files = fnmatch.filter(file_names, pattern)
print("匹配到的文件名:", matched_files)
# 输出:匹配到的文件名: ['abc.txt', 'abc123.txt']

在上面的例子中,我们首先导入了fnmatch模块,并使用filter函数进行文件名匹配。在 个示例中,我们使用简单的通配符模式"abc*"来匹配以"abc"开头的文件名。在第二个示例中,我们使用多个通配符模式来匹配文件名,通过遍历每个通配符模式,将所有匹配到的文件名添加到matched_files列表中。在第三个示例中,我们使用正则表达式的字符类来匹配以a或b开头的文件名。

fnmatch模块还提供了其他一些函数,如fnmatchcase用于区分大小写的匹配、fnmatch.translate用于将通配符模式转换为正则表达式等。

总之,fnmatch模块提供了一种简单而灵活的方式来进行通配符匹配,可以在处理文件名时非常方便地使用通配符模式进行匹配。