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

Python中的fnmatch模块及其使用示例

发布时间:2024-01-18 07:42:03

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模块的使用示例,通过使用该模块,可以简化文件名匹配的操作。它在处理文件名匹配时非常方便,同时也可以配合其他函数或模块一起使用,以实现更复杂的文件匹配需求。