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实现方法
Nov 18 Python
python通过zlib实现压缩与解压字符串的方法
Nov 19 Python
Python 字符串大小写转换的简单实例
Jan 21 Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
python中单下划线(_)和双下划线(__)的特殊用法
Aug 29 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
Python调用jar包方法实现过程解析
Aug 11 Python
Django跨域请求原理及实现代码
Nov 14 Python
pyspark对Mysql数据库进行读写的实现
Dec 30 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
新浪新闻小偷
2006/10/09 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
javascript折半查找详解
2015/01/26 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
python 文件操作api(文件操作函数)
2016/08/28 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
班班通项目实施方案
2014/02/25 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL