一、glob模块
官方文档:http://docs.python.org/library/glob.html#module-glob
glob有点像*nix下面的grep,但又没有那么强大。
1、说明:
glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索,支持通配符操作,*,?,[]这三个通配符,*代表0个或多个字符,?代表一个字符,[]匹配指定范围内的字符,如[0-9]匹配数字。
只有两个方法glob和iglob
2、glob
glob.glob(pathname)
该方法返回所有匹配的文件路径列表,该方法需要一个参数用来指定匹配的路径字符串(本字符串可以为绝对路径也可以为相对路径),
其返回的文件名只包括指定目录里的文件名,不包括子文件夹里的文件。未指定目录默认为当前目录。
比如:
glob.glob(r'c:\*.txt')
我这里就是获得C盘下的所有txt文件
glob.glob(r'E:\pic\*\*.jpg')
获得指定目录下的所有jpg文件
使用相对路径:
glob.glob(r'../*.py')
>>> glob.glob('/root/bin/*')
['/root/bin/check_http.sh~', '/root/bin/gzip_allvhosts_log.sh', '/root/bin/nginx_ctrl', '/root/bin/memcached_ctrol.sh', '/root/bin/pxe-svr_conf.sh', '/root/bin/Shell_center', '/root/bin/pxe-svr_conf.sh~', '/root/bin/dhcpd.conf', '/root/bin/rsync_client.sh', '/root/bin/mysql_backup_full.sh', '/root/bin/centos-web_conf.sh', '/root/bin/gzip_allvhosts_log.sh_bak_20120514', '/root/bin/iptables_init.sh', '/root/bin/iptables_init.sh~', '/root/bin/centos-web_conf.sh~', '/root/bin/check_http.sh']
>>> for i in glob.glob('/root/bin/*'):print i
3、iglob
glob.iglob(pathname)
iglob返回的是一个可迭代的对象。
>>> glob.iglob('/root/bin/*')
<generator object iglob at 0xb74b1194>
>>> file=glob.iglob('/root/bin/*')
>>> for i in file:print i
4、两者区别
相同之处:返回的结果都可以for遍历
>>> for i in glob.iglob('/root/bin/*'):print i
>>> for i in glob.glob('/root/bin/*'):print i
不同之处
glob返回的是一个列表。
iglob返回的是一个可迭代的对象。
官方实例
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
二、fnmatch模块
使用模式来匹配文件名
fnmatch(name, pat) fnmatch(文件夹, 匹配模式)
>>> import os
>>> from DiskWalk import DiskWalk
>>> from fnmatch import fnmatch
>>> files=DiskWalk('/tmp')
>>> for file in files.diskPaths():
... if fnmatch(file,"*.png"):
... print file
...
/tmp/pygdchart2alpha2/doc/images/simple.png
/tmp/pygdchart2alpha2/doc/images/area.png
/tmp/pygdchart2alpha2/doc/images/area3D.png
/tmp/pygdchart2alpha2/doc/images/bar.png