0%

python glob用法

python glob模块的用法

介绍

glob是python自带的一个操作文件的模块。用glob可以查找符合规定的文件路径名,可用以下匹配符

1
2
3
4
5
* 匹配0个或多个字符;
** 匹配所有文件,目录,子目录和子目录里面的文件 (3.5版本新增)
? 匹配单个字符;
[] 匹配指定范围内的字符,如:[0-9]匹配数字。
[!] 匹配不在指定范围内的字符

示例

假设windows中有如下一个目录,其中_config.yml和.gitgnore是文件,其他是文件夹,每个dir文件夹中有一个diri.py文件,例如dir2中有一个dir2.py文件。

1
2
3
4
5
6
7
8
9
10
.
├── example
├── dir1
├── dir2
├── dir3
├── train
├── val
├── test
├── _config.yml
└── exp.py

遍历当前目录

1
2
3
4
print(glob.glob('./*'))

out:
['.\\example', '.\\exp.py', '.\\test', '.\\train', '.\\val', '.\\_config.yml']

遍历上一级目录(在example文件夹中)

1
2
3
4
print(glob.glob('../*'))

out:
['.\\example', '.\\exp.py', '.\\test', '.\\train', '.\\val', '.\\_config.yml']

遍历本级下文件

1
2
3
4
5
6
print(glob.glob('./*.*')) #本级下所有文件
print(glob.glob("./*.yml")) #本级下所有yml文件

out:
['.\\exp.py', '.\\_config.yml']
['.\\_config.yml']

匹配特定文件目录

1
2
3
4
5
6
7
print(glob.glob("./*[ca][nf]*")) # 匹配ca和nf字母组合但一定相邻的名字
print(glob.glob("./*[ca]*[nf]*")) # 匹配有ca和nf中任意字母组合的名字
print(glob.glob("./*e?p*")) # 匹配e和p中间只有一个字符的名字
out:
[]
['.\\train', '.\\_config.yml']
['.\\exp.py']

匹配子目录及文件

1
2
3
4
5
6
print(glob.glob("./example/*")) # 遍历example文件夹中所有内容
print(glob.glob("./example/*/*")) # 遍历example文件夹中所有子文件夹及子文件夹中的文件

out:
['./example\\dir1', './example\\dir2', './example\\dir3']
['./example\\dir1\\dir1.py', './example\\dir2\\dir2.py', './example\\dir3\\dir3.py']