python fnmatch模块
订购热线:19979769347详情介绍

Python中的fnmatch模块提供了用于文件名模式匹配的功能,fnmatch函数是(shi)该模块中的(de)核心函数,用于检查文件名是否与指定的(de)模式匹配。(图片来源网络,侵删)
1、fnmatch函数的语法:

fnmatch.fnmatch(filename, pattern)
参数(shu)说明:

filename:要进行匹配的文件名。

pattern:用于匹配的模式。
2、模式(shi)匹配规则:
‘*’:匹配任(ren)意长度的字符(包括0个字符)。
‘?’:匹配任意单个字符。
‘[seq]’:匹配seq中的任意一个字符。
‘[!seq]’:匹配不在seq中的任意一个字符。
3、示例:
import fnmatchimport os获取当前目录下的所有文件files = os.listdir('.')遍历文件列表,使用fnmatch函数进行模式匹配for file in files: if fnmatch.fnmatch(file, '*.txt'): print(f'{ file} 是一个文本文件') elif fnmatch.fnmatch(file, '*.py'): print(f'{ file} 是一个Python文件') else: print(f'{ file} 不是文本或Python文件')4、使用通配符进行模式匹配:
import fnmatchimport os获取当前目录下的所有文件files = os.listdir('.')使用通配符进行模式匹配patterns = ['*.txt', '*.py']for pattern in patterns: for file in files: if fnmatch.fnmatch(file, pattern): print(f'{ file} 匹配模式 { pattern}')5、使用正(zheng)则表达式进行模式匹配:
虽然fnmatch函数主要用于简单的文(wen)件名模式匹配,但也(ye)可以通过将正则表达式转换为fnmatch模式来实现(xian)更复杂的匹配,可以使用re模块的escape函数将(jiang)正则表达式中的特殊字符转义,然后将其插入到fnmatch模式中。
import fnmatchimport redef regex_to_fnmatch(pattern): return '*' + re.escape(pattern).replace('\*', '.*').replace('\?', '.') + '*'将正则表达式转换为fnmatch模式regex_pattern = r'd+'fnmatch_pattern = regex_to_fnmatch(regex_pattern)使用(yong)转换后的(de)fnmatch模式进行匹配for file in os.listdir('.'): if fnmatch.fnmatch(file, fnmatch_pattern): print(f'{ file} 匹配正则表达式 { regex_pattern}')6、注意(yi)事项:
fnmatch函数在匹配时不区分(fen)大小(xiao)写,如果需要区分大小写,可以使用(yong)fnmatch.fnmatchcase函数。
fnmatch函数仅支持基本的文件名模式匹配,不支持正则表(biao)达式的(de)全部功能,如果需(xu)要进行更复(fu)杂的匹配,可以(yi)使用re模块的正则表达式功能。

