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 glob print 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']