简单掌握Python中glob模块查找文件路径的用法


Posted in Python onJuly 05, 2016

glob使用UNIX shell规则查找与一个模式匹配的文件名。只要程序需要查找文件系统中名字与某个模式匹配的一组文件,就可以使用这个模块。
glob的模式规则与re模块使用的正则表达式不相同。glob模式遵循标准UNIX路径扩展规则。只是用几个特殊字符来实现两个不同的通配符和字符区间。模式规则要应用于文件名中的段。模式中的路径可以是相对路径或绝对路径。
shell变量名和波浪线都不会扩展。

基本用法

1.glob.glob(pathname), 返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。
2.glob.iglob(pathname), 获取一个可编历对象,使用它可以逐个获取匹配的文件路径名。与glob.glob()的区别是:glob.glob同时获取所有的匹配路径,而glob.iglob一次只获取一个匹配路径。

3.eg:

import glob 
 
print glob.glob(r'E:\*\*.doc') 
print glob.glob(r'.\*.py') 
 
f = glob.iglob(r'.\*.py') 
 
for py in f: 
  print py

运行结果:

['E:\\test_file\\adplus.doc'] 
['.\\perfrom_test.py', '.\\pyTest.py', '.\\simulation_login.py', '.\\widget.py', '.\\__init__.py'] 
.\perfrom_test.py 
.\pyTest.py 
.\simulation_login.py 
.\widget.py 
.\__init__.py

下面我们分知识点详细来讲:

通配符
星号匹配一个文件名段中的0个或多个字符。

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

这个模式会匹配所有的路径名,但是不会递归搜索到子目录。

>>> ================================ RESTART ================================
>>> 
tmp\checklog_status.sh
tmp\check_Adwords_v1.2.sh
tmp\check_traffic.sh
tmp\cut_nginxlog_V1.2.sh
tmp\ip_conn.sh
tmp\ip_keepalive.sh
tmp\nagios使用手册.doc
tmp\nmap_ping
tmp\nrpe_install-1.3.sh
tmp\one
tmp\syn.sh
tmp\zabbix_agentd_2.0.10_win_V1.2.bat
tmp\zabbix_agentd_2.0.8_V1.3.sh
tmp\工作内容.doc

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

import glob
print 'Name explicitly:'
for name in glob.glob('tmp/one/*'):
  print '\t', name
print 'Name with wildcard:'
for name in glob.glob('tmp/*/*'):
  print '\t', name

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

>>> ================================ RESTART ================================
>>> 
Name explicitly:
  tmp/one\another.txt
  tmp/one\file.txt
Name with wildcard:
  tmp\one\another.txt
  tmp\one\file.txt

单字节通配符
问号会匹配文件名中该位置的单个字符。

import glob
for name in glob.glob('tmp/chec?_traffic.sh'):
  print name
>>> ================================ RESTART ================================
>>> 
tmp\check_traffic.sh

   

字符区间
使用字符区间([a-z]),可以匹配多个字符中的一个字符。

import glob
for name in glob.glob('tmp/one/[a-z]*'):
  print name

区间可以匹配所有小写字母。   

>>> ================================ RESTART ================================
>>> 
tmp/one\another.txt
tmp/one\file.txt
Python 相关文章推荐
Python切片用法实例教程
Sep 08 Python
Python实现爬取知乎神回复简单爬虫代码分享
Jan 04 Python
在Python操作时间和日期之asctime()方法的使用
May 22 Python
浅谈Python中用datetime包进行对时间的一些操作
Jun 23 Python
python中ASCII码和字符的转换方法
Jul 09 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
python处理document文档保留原样式
Sep 23 Python
Python切图九宫格的实现方法
Oct 10 Python
python对验证码降噪的实现示例代码
Nov 12 Python
opencv 阈值分割的具体使用
Jul 08 Python
python3.7调试的实例方法
Jul 21 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
Python的shutil模块中文件的复制操作函数详解
Jul 05 #Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Jul 04 #Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 #Python
Python实现代码统计工具(终极篇)
Jul 04 #Python
在win和Linux系统中python命令行运行的不同
Jul 03 #Python
win10系统中安装scrapy-1.1
Jul 03 #Python
使用Python从有道词典网页获取单词翻译
Jul 03 #Python
You might like
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
小程序多图列表实现性能优化的方法步骤
2019/05/28 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
Python实现类继承实例
2014/07/04 Python
Python2随机数列生成器简单实例
2017/09/04 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
Python实现对adb命令封装
2020/03/06 Python
用python写PDF转换器的实现
2020/10/29 Python
Python 可视化神器Plotly详解
2020/12/26 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
高三励志标语
2014/06/05 职场文书
2014年团支部工作总结
2014/11/17 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
2015公司年度工作总结
2015/05/14 职场文书
培训讲师开场白
2015/06/01 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL