简单掌握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 相关文章推荐
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
django之静态文件 django 2.0 在网页中显示图片的例子
Jul 28 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
Tensorflow 实现释放内存
Feb 03 Python
python实现图片转换成素描和漫画格式
Aug 19 Python
python实现猜拳游戏项目
Nov 30 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 Python
使用python对excel表格处理的一些小功能
Jan 25 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 mvc开发模式的感想
2011/06/28 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
js内置对象 学习笔记
2011/08/01 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
nodejs简单实现中英文翻译
2015/05/04 NodeJs
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
python super用法及原理详解
2020/01/20 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
关爱女孩行动实施方案
2014/03/13 职场文书
摄影展策划方案
2014/06/02 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
2014年科研工作总结
2014/12/03 职场文书
学生保证书
2015/01/16 职场文书
工作失职检讨书范文
2015/05/05 职场文书
离婚起诉书范本
2015/05/18 职场文书
javascript之Object.assign()的痛点分析
2022/03/03 Javascript
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android