glob模块-文件路径查找

glob模块是Python最简单的模块之一, 内容非常少, 用它可以查找符合特定规则的文件路径名, 查找文件时只会用到三个匹配符:

  • * : 匹配0个或多个字符
  • ? : 匹配单个字符
  • [] : 匹配指定范围内的字符, 如[0-9]匹配数字

glob.glob()

参数:
_(str): 文件路径的正则表达式

返回值:
_(list): 符合正则表达式的文件路径列表

备注:
返回所有匹配的文件路径列表, 它只有一个参数pathname, 定义了文件路径匹配的规则, 这里可以是绝对路径或者相对路径:

1
2
3
4
5
6
import glob
pathes_list = glob.glob("~/Pictures/*.jpg")
# 获取Pictures下的所有图片

relative_pathes_list = glob.glob("../*.py")
# 获取上级目录中的所有.py文件

在 linux, osx 系统中, 通配符的匹配是大小写区分的, 也就是需要特别指定大小写:

1
extensions = ['jpg', 'JPG', 'jpeg', 'JPEG']

但是在 windows 当中, 通配符的匹配是不区分大小写的, 因此只需要指定大小写中的一个即可, 两个都指定的话, 会出现重复的情况

1
extensions = ['jpg', 'jpeg']

glob.iglob

获取一个可遍历的对象, 使用它可以逐个获取匹配的文件路径名. 与glob.glob()的区别是: glob.glob()会同时获取到所有的匹配路径, 而glob.iglob()一次只获取一个匹配路径.

1
2
3
4
f = glob.iglob("../*.py")
print f # <generator object iglob at 0x00B9FF80>
for py in f:
print(py)