简单掌握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刷投票的脚本实现代码
Nov 08 Python
在Python中使用dict和set方法的教程
Apr 27 Python
python xlsxwriter库生成图表的应用示例
Mar 16 Python
深入浅析Python传值与传址
Jul 10 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
Python 分享10个PyCharm技巧
Jul 13 Python
django之自定义软删除Model的方法
Aug 14 Python
Python TKinter如何自动关闭主窗口
Feb 26 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
Mar 03 Python
python datetime处理时间小结
Apr 16 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
python数字图像处理:图像简单滤波
Jun 28 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的FTP学习(一)
2006/10/09 PHP
PHP 金额数字转换成英文
2010/05/06 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python列表计数及插入实例
2014/12/17 Python
python连接MySQL数据库实例分析
2015/05/12 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
python先序遍历二叉树问题
2017/11/10 Python
Sanic框架配置操作分析
2018/07/17 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
Python3实现定时任务的四种方式
2019/06/03 Python
python每天定时运行某程序代码
2019/08/16 Python
深入理解Python 多线程
2020/06/16 Python
CSS3教程(1):什么是CSS3
2009/04/02 HTML / CSS
Hotels.com中国区:好订网
2016/08/18 全球购物
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
Etam德国:内衣精品店
2019/08/25 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
一个大学生十年的职业规划
2014/01/17 职场文书
搞笑获奖感言
2014/01/30 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
司法建议书范文
2014/05/13 职场文书