简单掌握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实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
Python使用functools模块中的partial函数生成偏函数
Jul 02 Python
python读取excel表格生成erlang数据
Aug 26 Python
Pandas 对Dataframe结构排序的实现方法
Apr 10 Python
python中的常量和变量代码详解
Jul 25 Python
详解Python requests 超时和重试的方法
Dec 18 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
python读取ini配置的类封装代码实例
Jan 08 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
python中sort sorted reverse reversed函数的区别说明
May 11 Python
如何利用python读取micaps文件详解
Oct 18 Python
python绘制汉诺塔
Mar 01 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实现手机归属地查询API接口实现代码
2012/08/27 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
jquery validate使用攻略 第四步
2010/07/01 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
2016/09/14 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
python在控制台输出进度条的方法
2015/06/20 Python
Python多线程和队列操作实例
2015/06/21 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
Python 文件操作的详解及实例
2017/09/18 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
python调用c++传递数组的实例
2019/02/13 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
2020/04/01 Python
Python的logging模块基本用法
2020/12/24 Python
详解Python中的Lock和Rlock
2021/01/26 Python
美国益智玩具购物网站:Fat Brain Toys
2017/11/03 全球购物
商业计算机应用专业自荐书
2014/06/09 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
上级领导检查欢迎词
2015/09/30 职场文书