Python内置模块glob的使用介绍

📖 前言

  • 个人博客:https://www.power-blog.cn
  • CSDN:https://blog.csdn.net/powerbiubiu

👋 简介

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,则只会获取每层目录第一个文件,匹配不到所有文件

🎉 欢迎我的关注公众号

微信公众号

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值