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"))
out: ['.\\exp.py', '.\\_config.yml'] ['.\\_config.yml']
|
匹配特定文件目录
1 2 3 4 5 6 7
| print(glob.glob("./*[ca][nf]*")) print(glob.glob("./*[ca]*[nf]*")) print(glob.glob("./*e?p*")) out: [] ['.\\train', '.\\_config.yml'] ['.\\exp.py']
|
匹配子目录及文件
1 2 3 4 5 6
| print(glob.glob("./example/*")) print(glob.glob("./example/*/*"))
out: ['./example\\dir1', './example\\dir2', './example\\dir3'] ['./example\\dir1\\dir1.py', './example\\dir2\\dir2.py', './example\\dir3\\dir3.py']
|