Python中的fnmatch模块及其使用示例
fnmatch模块是Python标准库中的一个模块,用于实现文件名匹配。通过使用该模块,可以简单地判断一个文件名是否符合特定的模式。
fnmatch模块提供了两个主要的函数:fnmatch()和fnmatchcase()。
- fnmatch(filename, pattern):用于判断给定的文件名是否匹配某个模式。其中,filename是要匹配的文件名,pattern是用于匹配的模式。pattern可以包含普通字符和特殊字符,如*和?。*表示匹配任意数量的任意字符,而?表示匹配一个任意字符。如果匹配成功,则返回True,否则返回False。这个函数会根据系统的大小写敏感设置来进行匹配。
- fnmatchcase(filename, pattern):用法与fnmatch()相同,只是该函数会对大小写敏感。
以下是fnmatch模块的使用示例:
import fnmatch
import os
# 获取指定目录下所有的.py文件
def get_py_files(directory):
py_files = []
for root, dirnames, filenames in os.walk(directory):
for filename in filenames:
if fnmatch.fnmatch(filename, '*.py'):
py_files.append(os.path.join(root, filename))
return py_files
# 打印匹配的.py文件
def print_matched_files(directory):
py_files = get_py_files(directory)
for file in py_files:
print(file)
# 测试
print_matched_files('/path/to/directory')
上述示例中,get_py_files()函数使用了fnmatch()函数来判断文件是否为.py文件,并将匹配成功的文件名添加到一个列表中。print_matched_files()函数调用了get_py_files()函数,并打印了列表中的文件。
另外,fnmatch模块还可以配合其他函数或模块一起使用,以进行更复杂的文件匹配。例如,可以使用os.listdir()函数结合fnmatch模块来获取指定目录下符合特定模式的文件名列表。
import fnmatch
import os
# 获取指定目录下所有的.txt文件
def get_txt_files(directory):
txt_files = []
for filename in os.listdir(directory):
if fnmatch.fnmatch(filename, '*.txt'):
txt_files.append(filename)
return txt_files
# 测试
txt_files = get_txt_files('/path/to/directory')
print(txt_files)
上述示例中,get_txt_files()函数使用了fnmatch()函数来判断文件是否为.txt文件,并将匹配成功的文件名添加到一个列表中。最后,打印了列表中的文件名。
这就是fnmatch模块的使用示例,通过使用该模块,可以简化文件名匹配的操作。它在处理文件名匹配时非常方便,同时也可以配合其他函数或模块一起使用,以实现更复杂的文件匹配需求。
