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,文件夹中同样包含多张图片。

 

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

import glob;

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

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

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

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

 这里匹配规则应该写成D:my_pictures\*o*

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

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

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

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

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

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

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

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

 

  • 22
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python标准库中的glob模块提供了一种在文件系统中查找符合特定模式的文件路径的方法。它为使用通配符模式匹配文件路径提供了一种简单和方便的方法。使用glob模块,您可以通过使用通配符字符(例如*和?)来查找与特定模式匹配的文件路径。 以下是一些常用的glob模块函数: 1. glob.glob(pattern):返回与指定模式匹配的所有路径名列表。 2. glob.iglob(pattern):返回一个生成器,可以逐个返回符合指定模式的文件路径名。 3. glob.has_magic(pattern):如果指定的模式包含特殊字符(例如 * 或 ?),则返回 True。 以下是一些示例: ```python import glob # 返回所有以.py结尾的文件 py_files = glob.glob('*.py') print(py_files) # 返回所有以test开头的.py文件 test_py_files = glob.glob('test*.py') print(test_py_files) # 返回所有以.py结尾的文件的生成器 py_files_generator = glob.iglob('*.py') for file in py_files_generator: print(file) # 检查指定模式是否包含特殊字符 pattern = '*.py' if glob.has_magic(pattern): print(f'{pattern} contains magic characters') else: print(f'{pattern} does not contain magic characters') ``` 输出: ``` ['file1.py', 'file2.py', 'file3.py'] ['test_file1.py', 'test_file2.py'] file1.py file2.py file3.py *.py contains magic characters ``` 在上面的示例中,我们首先使用`glob.glob()`函数返回所有以.py结尾的文件的列表。然后,我们使用`glob.glob()`函数返回所有以test开头的.py文件的列表。接下来,我们使用`glob.iglob()`函数返回以.py结尾的文件的生成器,并使用循环逐个打印每个文件名。最后,我们使用`glob.has_magic()`函数检查指定模式是否包含特殊字符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城南皮卡丘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值