Python3标准库glob文件名模式匹配的问题


Posted in Python onMarch 13, 2020

1. glob文件名模式匹配

尽管glob API很小,但这个模块的功能却很强大。只要程序需要查找文件系统中名字与某个模式匹配的一组文件,就可以使用这个模块。要创建一个文件名列表,要求其中各个文件名都有某个特定的扩展名、前缀或者中间都有某个共同的字符串,就可以使用glob而不用编写定制代码来扫描目录内容。

glob的模式规则与re模块使用的正则表达式并不相同。实际上,glob的模式遵循标准UNIX路径扩展规则。只使用几个特殊字符来实现两个不同的通配符和字符区间。模式规则应用于文件名中的段(在路径分隔符/处截止)。

1.1 实例数据

本节中的示例假定当前工作目录中存在以下测试文件。

test_files
test_files/file.txt
test_files/file1.txt
test_files/file2.txt
test_files/filea.txt
test_files/fileb.txt
test_files/subfiles
test_files/subfiles/subfile.txt

如果这些文件不存在,请glob_maketestdata.py在运行以下示例之前使用示例代码创建它们。

Python3标准库glob文件名模式匹配的问题

1.2 通配符

星号(*)匹配一个文件名段中的0个或多个字符。例如,test_files/*。

import glob
for name in sorted(glob.glob('test_files/*')):
  print(name)

这个模式会匹配目录test_files中的所有路径名(文件或目录),但不会进一步递归搜索到子目录。glob()返回的数据不会排序,所以这里的实例会进行排序以便研究结果。

Python3标准库glob文件名模式匹配的问题

要列出子目录中的文件,必须把子目录包含在模式中。

import glob
print('Named explicitly:')
for name in sorted(glob.glob('test_files/subfiles/*')):
  print(' {}'.format(name))
print('Named with wildcard:')
for name in sorted(glob.glob('test_files/*/*')):
  print(' {}'.format(name))

前面显示的第一种情况显式列出了子目录名,第二种情况则依赖一个通配符来查找目录。

Python3标准库glob文件名模式匹配的问题

在这里,两种做法的结果是一样的。如果还有另一个子目录,则通配符会匹配这两个子目录,并且两个子目录中的文件名都会出现在结果中。

1.3 单字符通配符

问号(?)也是一个通配符。它会匹配文件名中该位置的单个字符。

import glob
for name in sorted(glob.glob('test_files/file?.txt')):
  print(name)

前面的例子会匹配以file开头,然后是另外一个任意字符,最后以.txt结尾的所有文件名。

Python3标准库glob文件名模式匹配的问题

1.4 字符区间

如果使用字符区间([a-z])而不是问号,则可以匹配多个字符中的一个字符。下面这个例子会查找名字中扩展名前有一个数字的所有文件。

import glob
for name in sorted(glob.glob('test_files/*[0-9].*')):
  print(name)

字符区间[0-9]会匹配所有单个数字。区间根据各字母/数字的字符码排序,短横线指示连续字符组成的一个不间断区间。这个区间值也可以写为[0123456789]。

Python3标准库glob文件名模式匹配的问题

1.5 转义元字符

有时有必要搜索名字中包含一些特殊元字符的文件,glob使用这些特殊元字符表示模式。escape()函数会建立一个适合的模式,其中的特殊字符会被“转义”,使它们不会被glob扩展或解释为特殊字符。

import glob
specials = '?*['
for char in specials:
  pattern = 'test_files/*' + glob.escape(char) + '.txt'
  print('Searching for: {!r}'.format(pattern))
  for name in sorted(glob.glob(pattern)):
    print(name)
  print()

可以通过构建一个包含单个元素的字符区间来转义各个特殊字符。

Python3标准库glob文件名模式匹配的问题

总结

到此这篇关于Python3标准库glob文件名模式匹配的问题的文章就介绍到这了,更多相关python glob 文件名匹配内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python文件与文件夹常见基本操作总结
Sep 19 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
在PyCharm中实现关闭一个死循环程序的方法
Nov 29 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
python数据化运营的重要意义
Nov 25 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
利用python 读写csv文件
Sep 10 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 Python
python中subplot大小的设置步骤
Jun 28 Python
python编写俄罗斯方块
Mar 13 #Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 #Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 #Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 #Python
python实现俄罗斯方块游戏(改进版)
Mar 13 #Python
Python之Django自动实现html代码(下拉框,数据选择)
Mar 13 #Python
Tensorflow中的dropout的使用方法
Mar 13 #Python
You might like
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
javascript完美实现给定日期返回上月日期的方法
2017/06/15 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
简单的三步vuex入门
2018/05/20 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Python实现读取json文件到excel表
2017/11/18 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
医院义诊活动总结
2014/07/04 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
Mysql事务索引知识汇总
2022/03/17 MySQL