视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
简单掌握Python中glob模块查找文件路径的用法
2020-11-27 14:29:09 责编:小采
文档


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 ================================
>>> 
tmpchecklog_status.sh
tmpcheck_Adwords_v1.2.sh
tmpcheck_traffic.sh
tmpcut_nginxlog_V1.2.sh
tmpip_conn.sh
tmpip_keepalive.sh
tmp
agios使用手册.doc
tmp
map_ping
tmp
rpe_install-1.3.sh
tmpone
tmpsyn.sh
tmpzabbix_agentd_2.0.10_win_V1.2.bat
tmpzabbix_agentd_2.0.8_V1.3.sh
tmp工作内容.doc

要列出子目录中的文件,必须把子目录包含在模式中。

import glob
print 'Name explicitly:'
for name in glob.glob('tmp/one/*'):
 print '	', name
print 'Name with wildcard:'
for name in glob.glob('tmp/*/*'):
 print '	', name 

第一种情况显示列出子目录名,第二种情况则依赖一个通配符查找目录。

>>> ================================ RESTART ================================
>>> 
Name explicitly:
 tmp/oneanother.txt
 tmp/onefile.txt
Name with wildcard:
 tmponeanother.txt
 tmponefile.txt


单字节通配符
问号会匹配文件名中该位置的单个字符。

import glob
for name in glob.glob('tmp/chec?_traffic.sh'):
 print name

>>> ================================ RESTART ================================
>>> 
tmpcheck_traffic.sh



字符区间
使用字符区间([a-z]),可以匹配多个字符中的一个字符。

import glob
for name in glob.glob('tmp/one/[a-z]*'):
 print name

区间可以匹配所有小写字母。

>>> ================================ RESTART ================================
>>> 
tmp/oneanother.txt
tmp/onefile.txt

下载本文
显示全文
专题