Python的glob模块
一、glob简介
1.glob的用途
glob是文件名模式匹配模块,用于根据条件获取指定目录下的文件列表,类似于文件搜索。
2.glob中常用通配符
①通配符’*’:零个或多个字符匹配文件名;
②通配符’?’:单个字符匹配文件名;
③通配符’[]’:匹配指定范围内的文件名,如: [1-9]匹配1至9内的字符;
④通配符’[!]’:匹配不在指定范围内的文件名;
⑤通配符’’:匹配指定路径下的所有子目录和当前目录里的文件名;
注:
a.①~④都是在当前目录下匹配;
b.⑤是在当前目录以及子目录里匹配,相当于文件夹递归查找;
c.⑤在使用时必须将函数参数recursive设置为True,否则无效;
d.⑤是python3.5新加的功能;
二、glob模块的用法
1.glob模块中的主要方法
glob模块中主要有glob(pathname, recursive=False)和iglob(pathname, recursive=False)两个方法,两个方法的参数相同。
2.方法参数说明
3.glob()和iglob()区别
glob()返回所有匹配的文件名列表,iglob(iterator)是获取一个迭代器对象,使用时逐个获取匹配文件名。
三、示例
1.创建示例文件夹
globMain
——globMain1.txt
——globMain2.txt
…
——globMain3.txt
——glob1
————glob1.txt
————glob2.txt
…
————glob9.txt
——glob2
————glob1.txt
————glob2.txt
…
————glob9.txt
2.示例程序
1.用通配符’*‘获取指定目录(不包含子目录)下的所有’.txt’文件
fileLs=glob.glob(r'globMain/*.txt') print(u"eg1:获取指定目录(不包含子目录)下的所有'.txt'文件") for file in fileLs: print(file)
2.#用通配符’’,获取指定目录(包含子目录)下的所有’.txt’文件,recursive必须True
fileLs=glob.glob('globMain//*.txt',recursive=True) print(os.linesep,u"eg2:获取指定目录(包含子目录)下的所有'.txt'文件") for file in fileLs: print(file)
3.用通配符’*'代替子目录名
fileLs=glob.glob('globMain/*/*.txt') print(os.linesep,u"eg3:用通配符'*'代替子目录名") for file in fileLs: print(file)
4.#用通配符’?'提取globMain下的globMain?.txt
fileLs=glob.glob('globMain/globMain?.txt') print(os.linesep,u"eg4:通配符'?'提取globMain下的globMain?.txt") for file in fileLs: print(file)
5.用通配符’[]’,选取文件名globMain[5-9].txt
fileLs=glob.glob('globMain/globMain[5-9].txt') print(os.linesep,u"eg5:用通配符'[]',选取文件名globMain[5-9].txt") for file in fileLs: print(file)
6.#用通配符’[!]’,选取文件名globMain[!5-9].txt
fileLs=glob.glob('globMain/globMain[!5-9].txt') print(os.linesep,u"eg6:用通配符'[!]',选取文件名globMain[!5-9].txt") for file in fileLs: print(file)
7.iglob()用迭代器逐个获取文件
files=glob.iglob('globMain/*.txt') print(os.linesep,u"eg7:iglob()用迭代器逐个获取文件") for file in files: print(file)
四、示例所有源码
# encoding:utf-8 import glob import os ''' 1.通配符'*':零个或多个字符匹配 2.通配符'?':单个字符匹配 3.通配符'[]':范围通配符,获取一定范围的文件列表 4.通配符'[!]':在3的基础上取非,即获取不在这个范围的文件列表 5.通配符'':匹配指定路径下的所有子目录和当前目录里的文件名; ''' #用通配符'*'获取指定目录(不包含子目录)下的所有'.txt'文件 fileLs=glob.glob(r'globMain/*.txt') print(u"eg1:获取指定目录(不包含子目录)下的所有'.txt'文件") for file in fileLs: print(file) #用通配符'',获取指定目录(包含子目录)下的所有'.txt'文件,recursive必须True fileLs=glob.glob('globMain//*.txt',recursive=True) print(os.linesep,u"eg2:获取指定目录(包含子目录)下的所有'.txt'文件") for file in fileLs: print(file) #用通配符'*'代替子目录名 fileLs=glob.glob('globMain/*/*.txt') print(os.linesep,u"eg3:用通配符'*'代替子目录名") for file in fileLs: print(file) #用通配符'?'提取globMain下的globMain?.txt fileLs=glob.glob('globMain/globMain?.txt') print(os.linesep,u"eg4:通配符'?'提取globMain下的globMain?.txt") for file in fileLs: print(file) #用通配符'[]',选取文件名globMain[5-9].txt fileLs=glob.glob('globMain/globMain[5-9].txt') print(os.linesep,u"eg5:用通配符'[]',选取文件名globMain[5-9].txt") for file in fileLs: print(file) #用通配符'[!]',选取文件名globMain[!5-9].txt fileLs=glob.glob('globMain/globMain[!5-9].txt') print(os.linesep,u"eg6:用通配符'[!]',选取文件名globMain[!5-9].txt") for file in fileLs: print(file) #iglob()用迭代器逐个获取文件 files=glob.iglob('globMain/*.txt') print(os.linesep,u"eg7:iglob()用迭代器逐个获取文件") for file in files: print(file)
今天的文章
Python的glob模块分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/80305.html