Python标准库glob模块详解

glob是python中的内置模块,该模块主要是用来查找文件与目录的。glob模块是按照 Unix shell 所使用的规则找出所有匹配特定模式的路径名称。我们只需要了解该模块的匹配规则与常用函数,就会使文件查找,路径匹配变得非常快捷简单。

1.匹配规则---四个常用通配符

* 匹配0个或多个字符
** 匹配所有文件、目录、子目录以及子目录中的文件(Python3.5新增)
匹配一个字符
[] 匹配指定范围内的字符,比如:[0-9]匹配数字,[a-z]匹配小写字母

2.glob模块中常用的3个函数

glob库有3个主要函数供我们使用,它们分别是glob()、iglob()、escape()函数。

glob.glob(pathname,recursive=False):返回符合匹配条件的所有文件的路径;

参数pathname:搜索的相对路径

recursive=False:代表递归调用,与特殊通配符“**”一同使用,默认为False,False表示不递归调用,True表示递归调用;

glob.iglob():返回一个迭代器对象,需要循环遍历获取每个元素,得到的也是符合匹配条件的所有文件的路径;

glob.escape():escape可以忽略所有的特殊字符,就是星号、问号、中括号,用处不大;

值得注意的是recursive=False:代表递归调用,与特殊通配符“**”一同使用,默认为False,False表示不递归调用,True表示递归调用;

下面我们来看一个例子

在电脑的D盘下,有my_pictures文件夹,该文件夹中包含许多.bmp .png .tif .jpg等格式的图片,文件夹下还有一个子文件夹level1, 该文件夹中同样包含许多.bmp .png .tif .jpg等格式的图片,该文件夹下还有一个子文件夹level2,文件夹中同样包含多张图片。

Python标准库glob模块详解_第1张图片

Python标准库glob模块详解_第2张图片

 Python标准库glob模块详解_第3张图片

任务一:找出my_pictures文件夹下以.jpg为后缀的图片(不含子目录) 

import glob;

path = r"D:my_pictures\*.jpg"#表示找出路径下所有以.jpg为后缀的图片
list=glob.glob(path)
print(list)

Python标准库glob模块详解_第4张图片

不难看出通配符*号在这里匹配任意名称的jpg格式的图片。

调用glob()方法返回的是一个列表,同样我们也可以调用iglob()方法,不过该方法返回的是一个迭代器。如图:

Python标准库glob模块详解_第5张图片

任务二:找出my_pictures文件夹下图片文件名称包含小写字母o的图片路径(不含子目录)

Python标准库glob模块详解_第6张图片 这里匹配规则应该写成D:my_pictures\*o*

我们也可以调用glob()函数完成这个小任务,不过只要匹配规则书写正确,调用这两个函数都是一样的道理。

 任务三:找出子目录level1下图片名为img*的jpg图片路径(不含子目录)

Python标准库glob模块详解_第7张图片

通配符?表示一个字符,img?.jpg可以匹配img1.jpg  img2.jpg等

任务三: 找出目录level1下图片名包含数字的图片路径(不含子目录)

Python标准库glob模块详解_第8张图片

注意:匹配规则式子为*[0-9]*.* 

而如果匹配式书写为*[0-9]*会匹配到子目录level2

Python标准库glob模块详解_第9张图片

 任务四:找出my_pictures中所有.jpg格式的图片(包含子目录)

Python标准库glob模块详解_第10张图片

 注意:匹配规则式子为**\*.jpg  并且参数recursive=True

 

你可能感兴趣的:(Python入门,python)