ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

`import fnmatch` 是 Python 中导入标准库模块 `fnmatch` 的语句

`import fnmatch` 是 Python 中导入标准库模块 `fnmatch` 的语句 import fnmatch是 Python 中导入标准库模块fnmatch的语句。该模块用于基于 Unix shell 风格通配符如*、?、[abc]进行文件名或字符串的模式匹配常用于文件过滤例如配合os.listdir()使用但不支持正则表达式语法。常用函数包括fnmatch.fnmatch(filename, pattern)判断单个字符串是否匹配通配符模式区分大小写Windows 下默认不区分fnmatch.fnmatchcase(filename, pattern)严格区分大小写的匹配fnmatch.filter(names, pattern)对字符串列表进行批量匹配筛选fnmatch.translate(pattern)将 shell 通配符模式转换为等价的正则表达式供高级使用。示例importfnmatchimportos filesos.listdir(.)py_filesfnmatch.filter(files,*.py)print(py_files)# 输出所有以 .py 结尾的文件名注意fnmatch适用于简单模式匹配如需复杂逻辑请使用re模块。fnmatch和re正则表达式模块在 Python 中都用于模式匹配但设计目标、语法能力与适用场景有本质区别✅核心区别总结维度fnmatchrere模块设计目的模拟 Unix shell 通配符如*.txt,file[0-9].log专为文件名/简单字符串匹配优化提供通用、强大、图灵完备的正则表达式引擎适用于任意文本结构解析语法风格Shell 风格*任意字符序列、?单个任意字符、[abc]或[a-z]字符类PCRE 衍生语法.*、.、\d、^、$、分组( )、捕获、断言、贪婪/非贪婪等功能能力❌ 不支持捕获组、反向引用、零宽断言、替换、编译复用虽可fnmatch.translate()转正则但非原生✅ 简单、安全、轻量无注入风险不执行任意代码✅ 支持捕获、替换re.sub、编译缓存re.compile、多标志re.IGNORECASE、性能优化预编译⚠️ 复杂正则易写错过度使用可能影响可读性与性能典型用途os.listdir()过滤文件名、glob.glob()底层支撑、配置项通配匹配如日志轮转规则文本抽取邮箱、URL、JSON 字段、格式校验密码强度、手机号、日志解析、HTML/XML 片段提取等大小写敏感性取决于平台Windows 默认不区分Linux/macOS 区分可用fnmatchcase()强制区分默认区分通过re.IGNORECASE标志控制一句话概括fnmatch是「轻量级文件名通配器」追求简洁与安全性re是「工业级文本处理引擎」追求表达力与灵活性。示例对比匹配以test开头、下划线后接数字、以.py结尾的文件importfnmatch,re nametest_123.py# fnmatch —— 简洁直观print(fnmatch.fnmatch(name,test_[0-9]*.py))# True注意[0-9]* 中 * 是 fnmatch 的通配符非正则# re —— 更精确可控支持 \d、、边界等print(bool(re.fullmatch(rtest_\d\.py,name)))# True需转义点号\d 表示一个及以上数字
返回列表