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

Python中的fnmatch模块:文件名匹配模式

发布时间:2024-01-18 07:39:56

fnmatch模块是Python标准库中的一个模块,用于文件名的匹配模式。它提供了简单的通配符功能,可以用于筛选文件名或路径。

使用fnmatch模块前需要先导入该模块:

import fnmatch

fnmatch模块中最常用的函数是fnmatch()和filter()函数。

1. fnmatch(pattern, string)

该函数用于检查一个字符串是否匹配指定的通配符模式。其中pattern参数是需要匹配的通配符模式,string参数是需要被匹配的字符串。

使用示例:

import fnmatch

pattern = "*.txt"
filename = "file.txt"

if fnmatch.fnmatch(filename, pattern):
    print("匹配成功!")
else:
    print("匹配失败!")

以上代码中,pattern是一个通配符模式,使用通配符 * 表示任意字符,使用通配符 .txt 表示匹配以 .txt 结尾的文件名。filename是需要被匹配的字符串,如果filename符合pattern的格式,则匹配成功。

2. filter(names, pattern)

该函数用于根据通配符模式来筛选一个字符串列表中的元素。其中names参数是一个字符串列表,pattern参数是需要匹配的通配符模式。

使用示例:

import fnmatch

pattern = "*.txt"
files = ["file1.txt", "file2.csv", "file3.txt", "file4.jpg"]

filtered_files = fnmatch.filter(files, pattern)
print(filtered_files)

以上代码中,pattern是一个通配符模式,使用通配符 * 表示任意字符,使用通配符 .txt 表示匹配以 .txt 结尾的文件名。files是一个包含多个文件名的字符串列表,filter()函数将返回符合pattern格式的文件名列表。

fnmatch模块还提供了一些其他的函数:

- fnmatchcase(pattern, string)

该函数与fnmatch()函数类似,但是在比较字符串时要区分大小写。

- translate(pattern)

该函数用于将通配符模式转换为正则表达式模式。通配符转换为正则表达式的规则如下:

- ? 匹配任意单个字符

- * 匹配0或多个任意字符

- [abc] 匹配字符a、b或c中的任意一个

- [a-z] 匹配a到z中的任意一个字符

- [!abc] 匹配除了字符a、b或c之外的其他任意一个字符

使用示例:

import fnmatch

pattern = "*.txt"
converted_pattern = fnmatch.translate(pattern)
print(converted_pattern)

以上代码中,pattern是一个通配符模式,使用通配符 * 表示任意字符,使用通配符 .txt 表示匹配以 .txt 结尾的文件名。通过translate()函数将通配符模式转换为正则表达式模式。

总结:

fnmatch模块提供了简单的通配符匹配功能,可以用于文件名的筛选和匹配。可以使用fnmatch()函数检查字符串是否匹配通配符模式,使用filter()函数筛选一个字符串列表中符合通配符模式格式的元素。同时,也可以使用fnmatchcase()和translate()等函数进行更灵活的操作。