fnmatch:Unix式glob模式匹配,简单场景下可以代替正则
介绍
fnmatch是模块用来匹配(通过glob模式、如Unix shell所使用的的模式)
文件名的
简单匹配
import fnmatch
'''
fnmatch将一个文件名与一个模式进行比较,并返回一个布尔值,指示二者是否匹配。
?:匹配一个任意字符
*:匹配任意个任意字符
[sequence]:匹配出现在sequence里面的一个字符
[!sequence]:匹配没有出现在sequence里面的一个字符
[a-m]:匹配出现在abcdef...m中的字符
[A-M]:匹配出现在ABCDEF...M中的字符
[0-9]:匹配出现在0123...9中的字符
'''
# 虽说是用来匹配文件名的,但是我们匹配普通的字符串也是可以的
# 注意返回的是一个bool值
print(fnmatch.fnmatch("abcde", "*")) # True
print(fnmatch.fnmatch("abcde", "abc?")) # False
print(fnmatch.fnmatch("abcde", "abc??")) # True
print(fnmatch.fnmatch("abcde", "[a-z]????")) # True
print(fnmatch.fnmatch("aaa", "aaa*")) # True
print(fnmatch.fnmatch("1ab", "[0-1]??")) # True
# 注意fnmatch默认是大小写不敏感的
print(fnmatch.fnmatch("Aaa", "aaa")) # True
# 如果我想区分大小写呢?可以使用fnmatchcase
print(fnmatch.fnmatchcase("Aaa", "aaa")) # False
import os
for name in os.listdir(r"C:\python37\Lib\asyncio"):
if fnmatch.fnmatch(name, "base_*.py"):
print(name)
'''
base_events.py
base_futures.py
base_subprocess.py
base_tasks.py
'''
过滤
import fnmatch
import os
from pprint import pprint
'''
要测试一个文件名序列,可以使用filter,会返回与模式参数匹配的文件名列表
'''
f = os.listdir(r"C:\python37\Lib\asyncio")
pprint(f)
'''
['base_events.py',
'base_futures.py',
'base_subprocess.py',
'base_tasks.py',
'constants.py',
'coroutines.py',
'events.py',
'format_helpers.py',
'futures.py',
'locks.py',
'log.py',
'proactor_events.py',
'protocols.py',
'queues.py',
'runners.py',
'selector_events.py',
'sslproto.py',
'streams.py',
'subprocess.py',
'tasks.py',
'transports.py',
'unix_events.py',
'windows_events.py',
'windows_utils.py',
'__init__.py',
'__pycache__']
'''
print(fnmatch.filter(f, "base_*.py"))
'''
['base_events.py', 'base_futures.py', 'base_subprocess.py', 'base_tasks.py']
'''
转换模式
import fnmatch
'''
在内部,fnmatch将glob模式转换为一个正则表达式,并使用re模块比较文件名和模式。
translate函数是将glob模式转换为正则表达式的公共API
'''
pattern = "base_*.py"
print(fnmatch.translate(pattern)) # (?s:base_.*\.py)\Z
fnmatch:Unix式glob模式匹配,简单场景下可以代替正则的更多相关文章
- .net测试篇之测试神器Autofixture在几个复杂场景下的使用示例以及与Moq结合
系列目录 为String指定一个值. 在第三节里我们讲了如何使用自定义配置加上一个自定义算法生成一个自定义字符串,然而有些时候我们仅仅是需要某个字段是有意义的,这个时候随便生成的字符串也满足不了我们的 ...
- 亿级流量场景下,大型缓存架构设计实现【1】---redis篇
*****************开篇介绍**************** -------------------------------------------------------------- ...
- 超大规模商用 K8s 场景下,阿里巴巴如何动态解决容器资源的按需分配问题?
作者 | 张晓宇(衷源) 阿里云容器平台技术专家 关注『阿里巴巴云原生』公众号,回复关键词"1010",可获取本文 PPT. 导读:资源利用率一直是很多平台管理和研发人员关心的话 ...
- API 管理在云原生场景下的机遇与挑战
作者 | 张添翼 来源 | 尔达Erda公众号 云原生下的机遇和挑战 标准和生态的意义 自从 Kubernetes v1.0 于 2015 年 7 月 21 日发布,CNCF 组织随后建立以来,其 ...
- ADO.NET Entity Framework 在哪些场景下使用?
在知乎回答了下,顺手转回来. Enity Framework已经是.NET下最主要的ORM了.而ORM从一个Mapping的概念开始,到现在已经得到了一定的升华,特别是EF等对ORM框架面向对象能力的 ...
- 不同场景下 MySQL 的迁移方案
一 目录 一 目录 二 为什么要迁移 三 MySQL 迁移方案概览 四 MySQL 迁移实战 4.1 场景一 一主一从结构迁移从库 4.2 场景二 一主一从结构迁移指定库 4.3 场景三 一主一从结构 ...
- devi into python 笔记(五)异常 文件操作 sys os glob模块简单实用
异常: Java异常: try catch块处理异常,throw引发异常. Python异常: try except块处理异常,raise引发异常. 异常如果不主动处理,则会交给Python中的缺省处 ...
- CI Weekly #11 | 微服务场景下的自动化测试与持续部署
又一周过去了,最近我们的工程师正在搞一个"大事情" --「[flow.ci](http://flow.ci/?utm_source=bokeyuan&utm_medium= ...
- asp.net core中负载均衡场景下http重定向https的问题
上周欣喜地发现,微软官方终于针对 asp.net core 在使用负载均衡的情况下从 http 强制重定向至 https 的问题提供了解决方法. app.UseForwardedHeaders(new ...
随机推荐
- MSMQ菜鸟教程
一 .MSMQ概述 MSMQ全称MicroSoft Message Queue,微软消息队列,是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于 ...
- jenkins:执行远程shell脚本时,脚本没有生效
问题: jenkins远程部署一台机器时,jenkins构建显示成功,但是查看服务日志却没有真正执行的sh run.sh脚本,导致服务并没有启动 解决: 只需要在命令最上方加上source /etc/ ...
- java、python、golang等开发语言如何快速生成二维码?
免费二维码生成途径非常多!比如比较有名的草料二维码,如果只是简单的使用,用它就足够了.但是如果想大规模的生成,那就不太合适了.再者很多工具都没办法在二维码中加入logo(像微信二维码一样). 接下来, ...
- Web模糊测试:WFuzz的坑和快速入门
转载自 FreeBuf.COM 首先说下我对wfuzz这个工具的简单介绍和理解.工具主要是做web模糊测试,最开始做fuzz我是自己写个脚本配合一些常用工具来测,后来看见这款工具因为是比较简单吧,学习 ...
- JQuery Validate - 自定义js验证
(function (window, $) { var validResult = {}; var checkObjs = { /** * 检查输入的一串字符是否全部是数字 * 输入:str Stri ...
- 【DSP开发】德州仪器达芬奇五年之路七宗罪,嵌入式处理器架构之争决战2012
芯片是产业链上游重要的一个环节,一颗小小的芯片具有极高的技术含量和价值,半导体行业每年都会有一个各大厂商营业额的排名,除去2009年,常年盘踞在前三名位置的分别是英特尔,三星半导体和德州仪器,英特尔凭 ...
- Qt5."Clang Code Model"一些设置
1.有些设置 可能这里在设置了,到别的地方(例如换了一个机子) 又要设置,这样的话 在不熟练的时候 手动敲进去会比较慢,这里 先记录下来 以后要用 直接复制就行了 2.Qt5.9.8 vs2017 : ...
- Stream API的代码示例.md
一.代码实例: package com.TestMain; import com.alibaba.fastjson.JSON; import java.util.*; import java.util ...
- 在Ubuntu中搭建Python3的虚拟环境并开始django项目
搭建环境: 1.首先安装virtualenv: pip install virtualenv 2.创建虚拟环境:(指定安装Python3,若不写-p python3,默认安装Python2.7),en ...
- 【HDU】6242-Geometry Problem
今天忽然心血来潮打开牛客网尝试了一下一站到底 前四道题都是不到二十分钟切完,然后第五道来了道计算几何 我也不会啊,于是就觉得大力随机也许可行 然鹅被精度卡到崩溃 后来我才知道 保证有解,是保证你的精度 ...