Python 标准库的 glob 模块支持查询匹配指定模式的文件或目录。这里的模式使用的并不是正则表达式,而是通过通配符来匹配的 Unix 风格的路径名扩展。
支持的通配符:
通配符 | 说明 |
* | 匹配任意个字符 |
? | 匹配一个字符 |
[] | 匹配括号间的任一字符,可以使用 - 表示范围 |
\ | 转义字符,如用 \? 匹配 ? |
假设现在有一个名为 dir 的目录,该目录及其子目录的结构如下:
├── dir│ ├── db.conf│ ├── dir1│ │ ├── hello-a.xml│ │ ├── hello-b.xml│ │ └── hello-d.xml│ ├── dir2│ │ ├── 2014│ │ └── 2015│ │ ├── 01.log│ │ ├── 02.log│ │ └── 03.log│ ├── f1.txt│ ├── f2.txt│ ├── f3.txt│ ├── foo.txt│ └── log.conf├── hello.py
glob_demo.py
import globprint glob.glob('dir/*')# ['dir/f2.txt', 'dir/dir2', 'dir/f3.txt', 'dir/f1.txt', 'dir/foo.txt', 'dir/dir1', 'dir/db.conf', 'dir/log.conf']print glob.glob('dir/dir1/hello-[a-c].xml')# ['dir/dir1/hello-b.xml', 'dir/dir1/hello-a.xml']print glob.glob('dir/dir2/*/[0-9]*.log')# ['dir/dir2/2015/03.log', 'dir/dir2/2015/01.log', 'dir/dir2/2015/02.log']print glob.glob('dir/f?.txt')# ['dir/f2.txt', 'dir/f3.txt', 'dir/f1.txt']print glob.glob('dir/*.conf')# ['dir/db.conf', 'dir/log.conf']