简单掌握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网络编程学习笔记(一)
Jun 09 Python
详解Django中的过滤器
Jul 16 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
Python操作SQLite数据库的方法详解
Jun 16 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
Python AES加密实例解析
Jan 18 Python
Python之列表的插入&替换修改方法
Jun 28 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
对Keras中predict()方法和predict_classes()方法的区别说明
Jun 09 Python
Python爬虫定时计划任务的几种常见方法(推荐)
Jan 15 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
文章推荐系统(三)
2006/10/09 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
js拖动滑块和点击水波纹效果实例代码
2018/10/16 Javascript
JavaScript变量提升和严格模式实例分析
2019/01/27 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
python列表操作实例
2015/01/14 Python
实例说明Python中比较运算符的使用
2015/05/13 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
Python3中详解fabfile的编写
2018/06/24 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
python如何处理程序无法打开
2020/06/16 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
乔迁之喜主持词
2014/03/27 职场文书
《菜园里》教学反思
2014/04/17 职场文书
学前班评语大全
2014/05/04 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
档案工作汇报材料
2014/08/21 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang