简单掌握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中使用item()方法遍历字典的例子
Aug 26 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
Python单例模式的两种实现方法
Aug 14 Python
用python实现的线程池实例代码
Jan 06 Python
Python异常处理操作实例详解
Aug 28 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
Python list与NumPy array 区分详解
Nov 06 Python
Python list运算操作代码实例解析
Jan 20 Python
Python 从attribute到property详解
Mar 05 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 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使用者状态管理功能的应用
2006/10/09 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
ThinkPHP实现多数据库连接的解决方法
2014/07/01 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
JavaScript DOM基础
2015/04/13 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
让python json encode datetime类型
2010/12/28 Python
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
深入浅析Python字符编码
2015/11/12 Python
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
python读取中文txt文本的方法
2018/04/12 Python
在PyCharm下使用 ipython 交互式编程的方法
2019/01/17 Python
Python数学形态学实例分析
2019/09/06 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
HTML5拖拽API经典实例详解
2018/04/20 HTML / CSS
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
介绍一下Linux文件的记录形式
2012/04/18 面试题
大学毕业生通用自荐信范文
2013/10/31 职场文书
员工保密协议书
2014/09/27 职场文书
详解Redis主从复制实践
2021/05/19 Redis
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
Linux中各个目录的作用与内容
2022/06/28 Servers