Python中fnmatch模块实现文件名匹配

 更新时间:2025年04月29日 10:34:16   作者:彬彬侠  
fnmatch模块用于文件名匹配,支持 Unix shell风格的通配符,本文主要介绍了Python中fnmatch模块实现文件名匹配,具有一定的参考价值,感兴趣的可以了解一下

fnmatch 模块用于 文件名匹配,支持 Unix shell 风格的通配符(类似 glob),但不匹配路径,只匹配文件名。

与 glob 不同的是:

  • glob 是 在文件系统中搜索匹配的文件。
  • fnmatch 只用于 匹配字符串模式,通常结合 os.listdir() 使用。

1. fnmatch.fnmatch()

匹配 文件名 是否符合某个通配模式(不区分大小写)。

import fnmatch

# 直接匹配文件名
print(fnmatch.fnmatch("data.txt", "*.txt"))  # True
print(fnmatch.fnmatch("data.csv", "*.txt"))  # False

2. fnmatch.fnmatchcase()

严格区分大小写的匹配。

import fnmatch

print(fnmatch.fnmatchcase("DATA.TXT", "*.txt"))  # False (大小写不同)
print(fnmatch.fnmatchcase("data.TXT", "*.TXT"))  # True

3. fnmatch.filter()

过滤列表,返回符合模式的文件名列表。

import fnmatch

files = ["data.txt", "report.doc", "image.png", "notes.TXT"]

# 过滤出所有 .txt 文件
txt_files = fnmatch.filter(files, "*.txt")
print(txt_files)  # ['data.txt']

4. fnmatch.translate()

将通配符模式转换为正则表达式(regex)。

import fnmatch

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

输出:

(?s:.*\.txt)\Z

可以用于 re.match() 进行更复杂的匹配。

5. 结合 os.listdir() 筛选文件

import os
import fnmatch

# 获取当前目录下的所有 .txt 文件
files = os.listdir(".")
txt_files = fnmatch.filter(files, "*.txt")

print(txt_files)

6. fnmatch vs glob

功能fnmatchglob
主要用途字符串匹配文件查找
是否查找文件❌ 仅匹配名称✅ 扫描目录获取匹配文件
常用方法fnmatch(), filter()glob.glob(), rglob()

7. 总结

  • fnmatch.fnmatch():匹配字符串(文件名)。
  • fnmatch.fnmatchcase():大小写敏感的匹配。
  • fnmatch.filter():从列表中过滤符合模式的文件。
  • fnmatch.translate():将通配符转换为正则表达式。

适用于 字符串匹配,如 文件筛选、日志分析、路径匹配 等。如果需要查找磁盘上的文件,建议使用 glob 或 os.listdir() 结合 fnmatch.filter()

到此这篇关于Python中fnmatch模块实现文件名匹配的文章就介绍到这了,更多相关Python fnmatch模块 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中的tuple元组详细介绍

    Python中的tuple元组详细介绍

    这篇文章主要介绍了Python中的tuple元组详细介绍,本文讲解了Tuple 与 list 的相同之处、Tuple 不存在的方法、用 Tuple 的好处、Tuple 与 list 的转换等内容,需要的朋友可以参考下
    2015-02-02
  • PaddleOCR 识别表情包文字示例详解

    PaddleOCR 识别表情包文字示例详解

    这篇文章主要为大家介绍了PaddleOCR 识别表情包文字示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 浅谈FastAPI到底用不用async问题

    浅谈FastAPI到底用不用async问题

    这篇文章主要介绍了FastAPI到底用不用async问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Node.js 和 Python之间该选择哪个?

    Node.js 和 Python之间该选择哪个?

    这篇文章主要介绍了Node.js 和 Python之间的优劣,并得出结论,希望能为你在项目选择哪种技术时提供一些帮助。感兴趣的朋友可以了解下
    2020-08-08
  • Python 阶乘详解

    Python 阶乘详解

    这篇文章主要介绍了详解用python的阶乘,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • 用Python代码自动生成文献的IEEE引用格式的实现

    用Python代码自动生成文献的IEEE引用格式的实现

    这篇文章主要介绍了用Python代码自动生成文献的IEEE引用格式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python实现微信好友数据爬取及分析

    Python实现微信好友数据爬取及分析

    这篇文章会基于Python对微信好友进行数据分析,这里选择的维度主要有:性别、头像、签名、位置,主要采用图表和词云两种形式来呈现结果,其中,对文本类信息会采用词频分析和情感分析两种方法,感兴趣的小伙伴可以了解一下
    2021-12-12
  • python文件和目录操作函数小结

    python文件和目录操作函数小结

    这篇文章主要介绍了python文件和目录操作函数小结,主要涉及到os模块和shutil模块的一些方法,需要的朋友可以参考下
    2014-07-07
  • 使用Python的Bottle框架写一个简单的服务接口的示例

    使用Python的Bottle框架写一个简单的服务接口的示例

    这篇文章主要介绍了使用Python的Bottle框架写一个简单的服务接口的示例,基于Linux系统环境,需要的朋友可以参考下
    2015-08-08
  • 基于Python实现一键获取电脑浏览器的账号密码

    基于Python实现一键获取电脑浏览器的账号密码

    发现很多人在学校图书馆喜欢用电脑占座,而且出去的时候经常不锁屏,为了让大家养成良好的习惯,本文将分享一个小程序,可以快速获取你存储在电脑浏览器中的所有账号和密码,感兴趣的可以了解一下
    2022-05-05

最新评论