fnmatch模块的使用

简介: fnmatch模块的使用此模块的主要作用是文件名称的匹配,并且匹配的模式使用的unix shell风格。fnmatch比较简单就4个方法分别是:fnmatch,fnmatchcase,filter,translate1.fnmatchfnmatch.fnmatch(filename, pattern)测试filename,是否符合pattern。

fnmatch模块的使用

此模块的主要作用是文件名称的匹配,并且匹配的模式使用的unix shell风格。
fnmatch比较简单就4个方法分别是:fnmatch,fnmatchcase,filter,translate

1.fnmatch

fnmatch.fnmatch(filename, pattern)
测试filename,是否符合pattern。

import fnmatch
import os
def run():
  for file in os.listdir('.'): #os.listdir返回指定的文件夹包含的文件或文件夹的名字的列表
        if fnmatch.fnmatch(file, '*.py'): #判断是否有后缀为.py的文件,*代表文件名长度格式不限制。
           print(file)
if __name__ == '__main__':
    run()

2.fnmatchcase

fnmatch.fnmatchcase(filename, pattern)
和fnmatch()类似,只是fnmatchcase 强制区分大小写匹配,不管文件系统是否区分。

  print(fnmatch.fnmatchcase("text.py","text.*"))  #True
  print(fnmatch.fnmatchcase("Text.py""text.*"))  # False
  print(fnmatch.fnmatchcase("Text.Py""*.py"))  # False
  print(fnmatch.fnmatchcase("Text.Py""*.Py"))  # True

3.filter

fnmatch.filter(names, pattern)
实现列表特殊字符的过滤或筛选,返回符合匹配模式的字符列表,它的作用类似
[n for n in names if fnmatch(n, pattern)]

  filelist=["a.text","b.jpg","c.png","d.py",'e.text',"sss.py"]
  print(fnmatch.filter(filelist,"?.py")) #匹配前面是一个字符的.py文件
  输出:d.py

4.translate

fnmatch.translate(pattern):
翻译模式, fnmatch将这种全局模式转换成一个正则式, 然后使用re模块来比较名字和模式。 translate() 函数是一个公共API用于将全局模式转换成正则式

regex = fnmatch.translate('[f,d,d,d,g,h].txt')#将[f,d,d,d,g,h].txt转为正则匹配的模式
print("regex",regex)#(?s:[f,d,d,d,g,h]\.txt)\Z
#\Z:匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。
reobj = re.compile(regex)#生成re匹配模块
print(reobj.match ('f.txt'))#返回一个匹配对象
#<_sre.SRE_Match object; span=(0, 5), match='f.txt'>
目录
相关文章
|
消息中间件 负载均衡 监控
【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践
【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践
3948 1
|
1月前
|
存储 安全 Windows
微PE系统工具箱制作,超详细教程,自己也可以重装电脑系统
微PE系统工具箱是电脑维护利器,支持修复引导、清除病毒、分区硬盘、备份数据及重装系统。操作简单,功能强大,适合技术人员与普通用户应对各类系统问题。
602 4
教育技术工具盘点:五大免费软件助力教师信息化
随着科技的发展,学校在管理、教学等方面逐步引入信息技术,提升教师专业技能。本文推荐了几款实用的教育技术工具,如草料二维码、101教育PPT、格式工厂、小猿口算和万彩动画大师,以提高教学效率。草料二维码适用于教学资源电子化、信息收集等工作,101教育PPT则提供丰富的PPT资源,方便教师备课和互动教学。其他工具也各具特色,助力教学创新。
569 10
教育技术工具盘点:五大免费软件助力教师信息化
|
传感器 前端开发 IDE
基于ESP32的灌溉系统
基于ESP32的灌溉系统
358 1
|
数据采集 自然语言处理 数据挖掘
一文搞懂:【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
一文搞懂:【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
611 0
|
SQL 前端开发 NoSQL
关于幂等:大厂如何解决幂等问题?
为确保分布式系统中接口的幂等性,防止重复下单及更新数据时出现ABA问题,可采取以下措施:首先,每个请求需具备唯一标识符,如订单ID,确保同一订单ID仅能成功处理一次。其次,处理请求后需记录状态标识,如在数据库中记录支付流水。接收请求时检查是否已处理,利用数据库的唯一性约束防止重复操作。例如,支付前插入支付流水记录,若订单ID已存在,则阻止重复支付。此外,为解决ABA问题,可在订单表中增加版本号字段,更新数据时需验证版本号一致性并同步递增版本号,确保数据正确性及更新操作的幂等性。
|
机器学习/深度学习 编解码 自然语言处理
SCLIP?与CLIP是什么关系?比CLIP高40点,这么离谱吗?
SCLIP?与CLIP是什么关系?比CLIP高40点,这么离谱吗?
307 0
|
搜索推荐 数据安全/隐私保护 BI
带你读《金牌电商客服实战》之一:金牌客服是如何炼成的
本书紧跟时代前沿脉络,内容实用且“新”,不仅讲解了淘宝、京东和苏宁等传统平台的电商客服岗位技能和实战经验,而且还介绍了当下“新电商”代表拼多多平台在电商客服方面的系统性内容。
|
数据安全/隐私保护
winscp自动执行脚本
我们经常使用WinSCP工具通过sftp协议上传获取文件,本文描述通过bat批量处理文件。 首先,我们打开dos命令窗口使用 cd \d :D\WinSCP 打开WinSCP安装目录 上传文件: winscp.
3425 0
|
Linux 运维 安全
linux内网机器访问外网代理设置squid
公司一般出于安全考虑, 在同一局域网中只有一台机器可以访问外网,运维进行了整体的限制, 但是在后面的工作中,需要在机器上安装一些软件,及命令,所以其他的机器需要访问外网来简化工作, 但又不能打乱原有运维的设置,所以需要在能访问外网的机器上做个代理。
2591 0