python标准库之glob介绍
glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。
查找文件只用到三个匹配符:”*”, “?”, “[]”。
- ”*”匹配0个或多个字符;
- ”?”匹配单个字符;
- ”[]”匹配指定范围内的字符,如:[0-9]匹配数字。
1、通配符
- 星号(*)匹配零个或多个字符
import glob
for name in glob.glob('dir/*'):
print (name)
输出:
dir/file.txt
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
dir/subdir
- 列出子目录中的文件,必须在模式中包括子目录名:
import glob
#用子目录查询文件
print ('Named explicitly:')
for name in glob.glob('dir/subdir/*'):
print ('\t', name)
#用通配符* 代替子目录名
print ('Named with wildcard:')
for name in glob.glob('dir/*/*'):
print ('\t', name)</pre>
输出
Named explicitly:
dir/subdir/subfile.txt
Named with wildcard:
dir/subdir/subfile.txt
- 获取指定目录下的所有图片
import glob
print(glob.glob(r"C:/Users/zhf/Desktop/flower/flower_photos/daisy/*.jpg"))
输出列表
['C:/Users/zhf/Desktop/flower/flower_photos/daisy\\100080576_f52e8ee070_n.jpg',
...,
'C:/Users/zhf/Desktop/flower/flower_photos/daisy\\10140303196_b88d3d6cec.jpg']
获取目录下所有文件
import glob
glob.glob("*")
注意,也可以使用iglob,其与glob.glob()的区别是:glob.glob同时获取所有的匹配路径,而glob.iglob一次只获取一个匹配路径。
2、单个字符通配符
用问号(?)匹配任何单个的字符。
import glob
for name in glob.glob('dir/file?.txt'):
print (name)
输出
dir/file1.txt
dir/file2.txt
dir/filea.txt
dir/fileb.txt
3、字符范围
当需要匹配一个特定的字符,可以使用一个范围
import glob
for name in glob.glob('dir/*[0-9].*'):
print (name)
输出
dir/file1.txt
dir/file2.txt
网友评论