python模块整理8-glob(类似grep)和fnmatch(匹配文件名)

本文介绍了Python中用于文件操作的glob和fnmatch模块,详细解释了它们的功能、用法以及区别,提供了实例演示如何使用这两个模块进行文件搜索和匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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

转载于:https://www.cnblogs.com/diege/archive/2012/10/04/2711419.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值