简单掌握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 相关文章推荐
py2exe 编译ico图标的代码
Mar 08 Python
Python机器学习之SVM支持向量机
Dec 27 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
Sep 17 Python
python代码编写计算器小程序
Mar 30 Python
详解Python文件修改的两种方式
Aug 22 Python
Python tkinter模版代码实例
Feb 05 Python
Python基础之字符串操作常用函数集合
Feb 09 Python
关于多元线性回归分析——Python&SPSS
Feb 24 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
Mar 06 Python
python3.8.1+selenium实现登录滑块验证功能
May 22 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
Python如何输出百分比
Jul 31 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
php XMLWriter类的简单示例代码(RSS输出)
2011/09/30 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python迭代用法实例教程
2014/09/08 Python
Python中取整的几种方法小结
2017/01/06 Python
通过shell+python实现企业微信预警
2019/03/07 Python
python如何实现代码检查
2019/06/28 Python
Pandas中resample方法详解
2019/07/02 Python
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
思想品德课教学反思
2014/02/10 职场文书
租房协议书样本
2014/08/20 职场文书
最美护士演讲稿
2014/08/27 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
python 三边测量定位的实现代码
2021/04/22 Python