使用fnmatch进行文件名匹配的python函数
发布时间:2024-01-18 07:40:19
fnmatch模块是Python中用于文件名匹配的模块。它提供了一些简单的通配符模式匹配功能,用于比较两个字符串是否匹配。
fnmatch模块中最常用的函数是fnmatch和fnmatchcase。
fnmatch函数使用文件名模式来匹配字符串,并根据匹配结果返回True或False。它的语法如下:
fnmatch.fnmatch(filename, pattern)
- filename:要匹配的字符串。
- pattern:文件名模式,可以使用通配符*和?。
fnmatchcase函数与fnmatch函数类似,但它对大小写敏感。也就是说,只有在字符串与模式完全相同的情况下,才会返回True。
下面是一个使用fnmatch函数的示例:
import fnmatch
# 示例1:简单匹配
print(fnmatch.fnmatch('foo.txt', '*.txt')) # True
print(fnmatch.fnmatch('bar.txt', '*.png')) # False
# 示例2:通配符*的使用
print(fnmatch.fnmatch('foo_bar.txt', '*bar*')) # True
print(fnmatch.fnmatch('baz.txt', '*.png')) # False
# 示例3:通配符?的使用
print(fnmatch.fnmatch('abc.txt', 'a?c.txt')) # True
print(fnmatch.fnmatch('abcd.txt', 'a?c.txt')) # False
# 示例4:使用fnmatchcase进行大小写敏感匹配
print(fnmatch.fnmatchcase('foo.txt', '*.TXT')) # False
print(fnmatch.fnmatchcase('foo.txt', '*.txt')) # True
fnmatch模块还提供了一个fnmatch函数的变体——fnmatch.filter。它接受一个文件名列表和一个文件名模式作为参数,并返回与模式匹配的文件名列表。可以使用它来筛选出符合特定模式的文件名。
下面是一个使用fnmatch.filter函数的示例:
import fnmatch # 示例5:使用fnmatch.filter进行文件名筛选 filenames = ['foo.txt', 'bar.txt', 'baz.png', 'abc.txt'] filtered_filenames = fnmatch.filter(filenames, '*.txt') print(filtered_filenames) # ['foo.txt', 'bar.txt']
上述示例中,我们传入了一个文件名列表和一个文件名模式'*.txt',fnmatch.filter函数返回了与模式匹配的文件名列表['foo.txt', 'bar.txt']。
总之,fnmatch模块提供了一种简单的方法来比较文件名与通配符模式是否匹配。您可以使用fnmatch函数直接比较两个字符串,或者使用fnmatch.filter函数筛选出符合特定模式的文件名列表。
