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

Python中的fnmatch模块:通配符字符匹配

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

fnmatch模块是Python中的一个用于进行通配符字符匹配的模块。它提供了一些函数来实现用于文件名匹配的简单通配符功能。通配符是一种用于模式匹配的语法,它允许使用特殊字符来代替字符串的一部分,从而进行模式匹配。

fnmatch模块中最常用的函数是fnmatch()和fnmatchcase()。这两个函数都接受一个文件名和一个模式作为参数,并返回匹配结果。其中,fnmatch()函数在匹配时不区分大小写,而fnmatchcase()函数在匹配时区分大小写。

下面是一个使用fnmatch模块进行通配符字符匹配的例子:

import fnmatch

# 使用fnmatch匹配一个文件名是否符合指定模式
pattern = '*.txt'
filenames = ['file1.txt', 'file2.txt', 'file3.csv', 'file4.py']
matched_files = [filename for filename in filenames if fnmatch.fnmatch(filename, pattern)]
print(matched_files)  # 输出:['file1.txt', 'file2.txt']

# 使用fnmatchcase匹配一个文件名是否符合指定模式,区分大小写
pattern = '*.TXT'
matched_files = [filename for filename in filenames if fnmatch.fnmatchcase(filename, pattern)]
print(matched_files)  # 输出:[]

# 使用fnmatch过滤目录中的文件
import os

# 获取当前目录下的所有文件名
all_files = os.listdir('.')
# 使用fnmatch过滤文件名,只保留以.py结尾的文件
py_files = [filename for filename in all_files if fnmatch.fnmatch(filename, '*.py')]
print(py_files)  # 输出:['file4.py']

在上面的例子中,我们首先使用fnmatch函数来判断一个文件名是否符合指定的模式。在 个例子中,我们使用'*.txt'作为模式,来匹配文件名列表中的文件。只有以'.txt'作为文件扩展名的文件会被匹配并返回。在第二个例子中,我们使用'*.TXT'作为模式,但由于fnmatch函数不区分大小写,在文件名列表中找不到匹配项,返回一个空列表。

在第三个例子中,我们使用fnmatch模块结合os模块来过滤目录中的文件。首先使用os.listdir函数获取当前目录下的所有文件名,然后使用fnmatch函数过滤,只保留以'.py'作为文件扩展名的文件。

除了fnmatch函数,fnmatch模块还提供了一些其他函数,比如filter函数可以用于过滤列表中的文件名,而不是生成一个新列表。fnmatchcase函数和fnmatch函数的功能类似,但它在匹配时区分大小写,而不会根据系统的大小写敏感设置进行匹配。

总而言之,fnmatch模块是Python中一个很实用的模块,可以用于进行通配符字符的匹配。它提供了一些简单而强大的函数,可以方便地进行文件名的模式匹配,从而在文件操作中提供了很大的便利性。