👋 简介
glob是python中的内置模块,该模块主要是用来查找文件与目录的。glob模块是按照 Unix shell 所使用的规则找出所有匹配特定模式的路径名称。我们只需要了解该模块的匹配规则与常用函数,就会使文件查找,路径匹配变得非常快捷简单。
💡 正文
1 glob模块介绍
1.1 通配符
-
*
:匹配0个或多个字符; -
**
:匹配所有文件、目录、子目录和子目录里的文件(3.5版本新增); -
?
:代匹配一个字符; -
[]
:匹配指定范围内的字符,如[0-9]匹配数字,[a-z]匹配小写字母;
1.2 方法
-
glob.glob()
:返回符合匹配条件的所有文件的路径; -
glob.iglob()
:返回一个迭代器对象,需要循环遍历获取每个元素,得到的也是符合匹配条件的所有文件的路径; -
glob.escape()
:escape可以忽略所有的特殊字符,就是星号、问号、中括号;
备注:recursive=False
:代表递归调用,与特殊通配符“**”
一同使用,默认为False,False表示不递归调用,True表示递归调用;
1.3 测试文件准备
D:\picture D:\picture\L1 D:\picture\L1\L2 三层目录,每个文件夹中都有4个文件,其中3个.jpg
,1个.png
2 glob函数的使用
2.1 glob()函数
该方法返回一个list
import glob
path = r'D:\picture\*.jpg'
files = glob.glob(path)
print(files)
# ['D:\\picture\\img1.jpg', 'D:\\picture\\img2.jpg', 'D:\\picture\\img3.jpg']
2.2 iglob()函数
使用该函数,可以生产一个迭代器
path = r'D:\picture\*.jpg'
files = glob.iglob(path)
for file in files:
print(file)
# D:\picture\img1.jpg
# D:\picture\img2.jpg
# D:\picture\img3.jpg
3 通配符是使用
3.1 找出后缀为.jpg
的文件
D:\picture\*.jpg
:匹配当前目录下文件后缀名为jpg的文件
import glob
path = r'D:\picture\*.jpg'
files = glob.glob(path)
print(files)
# ['D:\\picture\\img1.jpg', 'D:\\picture\\img2.jpg', 'D:\\picture\\img3.jpg']
3.2 匹配文件名包含m的文件
D:\picture\*m*
:匹配出当前目录下文件名及后缀名都含有m的文件
path = r'D:\picture\*m*'
files = glob.glob(path)
print(files)
# ['D:\\picture\\a.md', 'D:\\picture\\img1.jpg', 'D:\\picture\\img2.jpg', 'D:\\picture\\img3.jpg', 'D:\\picture\\img4.png', 'D:\\picture\\maven.txt']
3.3 匹配以img开头的文件
D:\picture\img?.jpg
:匹配出当前目录下以img开头的文件(?只能匹配一个字符)
path = r'D:\picture\img?.jpg'
files = glob.glob(path)
print(files)
# ['D:\\picture\\img1.jpg', 'D:\\picture\\img2.jpg', 'D:\\picture\\img3.jpg']
D:\picture\img*.jpg
:匹配出当前目录下以img开头的文件(*可以匹配一个活多个字符)
path = r'D:\picture\img*.jpg'
files = glob.glob(path)
print(files)
# ['D:\\picture\\img1.jpg', 'D:\\picture\\img123.jpg', 'D:\\picture\\img2.jpg', 'D:\\picture\\img3.jpg']
3.4 匹配当前目录文件名包含数字的文件
D:\picture\*[0-9]*.*
:匹配当前目录下所有文件名包含数字的所有文件
path = r'D:\picture\*[0-9]*.*'
files = glob.glob(path)
print(files)
# ['D:\\picture\\img1.jpg', 'D:\\picture\\img123.jpg', 'D:\\picture\\img2.jpg', 'D:\\picture\\img3.jpg', 'D:\\picture\\img4.png']
备注:
-
如果规则写成
*[0-9]*
,则同时会匹配到满足要求的目录 -
如果规则写成
*[!5-9]*
,则满足5-9的不会匹配,会把0-4的匹配出来
3.5 匹配当前目录下后缀为jpg的文件,包括子目录
D:\picture\**\*.jpg
:匹配后缀为jpg的文件,包括子目录中的同样进行匹配
path = r'D:\picture\**\*.jpg'
files = glob.glob(path, recursive=True)
print(files)
# ['D:\\picture\\img1.jpg', 'D:\\picture\\img123.jpg', 'D:\\picture\\img2.jpg', 'D:\\picture\\img3.jpg', 'D:\\picture\\L1\\img1.jpg', 'D:\\picture\\L1\\img2.jpg', 'D:\\picture\\L1\\img3.jpg', 'D:\\picture\\L1\\L2\\img1.jpg', 'D:\\picture\\L1\\L2\\img2.jpg', 'D:\\picture\\L1\\L2\\img3.jpg']
备注:recursive=True
,参数必填,若不为True,则只会获取每层目录第一个文件,匹配不到所有文件
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典