【Python】详解glob模块匹配文件

glob的应用场景是要寻找一系列(符合特定规则)文件名。

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

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

假设以下例子目录是这样的。

这里写图片描述

1、匹配所有文件:可以用*匹配任意长度字节。glob.glob比较常用,返回一个list,也可用glob.iglob返回生成器。

import glob

glob.glob('./Desktop/dir/*')
Out[42]: 
['./Desktop/dir\\file.txt',
 './Desktop/dir\\file1.txt',
 './Desktop/dir\\file2.txt',
 './Desktop/dir\\filea.txt',
 './Desktop/dir\\fileb.txt',
 './Desktop/dir\\subdir']

glob.glob('./Desktop/dir/*/*')
Out[43]: ['./Desktop/dir\\subdir\\subflie.txt']

匹配子目录文件

可以指定子目录名称,也可以用通配符代替,不显示指定。


print('Named explicitly:')
for name in glob.glob('Desktop/dir/subdir/*'):
    print('\t', name)

print('Named with wildcard:')
for name in glob.glob('Desktop/dir/*/*'):
    print('\t', name)

Named explicitly:
         Desktop/dir/subdir\subflie.txt
Named with wildcard:
         Desktop/dir\subdir\subflie.txt

2、单字节通配符匹配,除了*以外,还有?匹配单个字符。比如下面这个例子,匹配以file开头,以.txt结尾,中间是任一字符的文件。

for name in glob.glob('Desktop/dir/file?.txt'):
    print(name)

Desktop/dir\file1.txt
Desktop/dir\file2.txt
Desktop/dir\filea.txt
Desktop/dir\fileb.txt

3、字符区间匹配[0-9],比如匹配后缀前是数字的文件。

for name in glob.glob('Desktop/dir/*[0-9].*'):
    print(name)

Desktop/dir\file1.txt
Desktop/dir\file2.txt

猜你喜欢

转载自blog.csdn.net/brucewong0516/article/details/81066408