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

使用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函数筛选出符合特定模式的文件名列表。