10.7. glob — Unix 风格的路径名模式扩展 — Python 文档
来自菜鸟教程
Python/docs/2.7/library/glob
10.7. 球体 — Unix 风格的路径名模式扩展
glob 模块根据 Unix shell 使用的规则查找与指定模式匹配的所有路径名,尽管结果以任意顺序返回。 不进行波浪号扩展,但 *
、?
和用 []
表示的字符范围将正确匹配。 这是通过同时使用 os.listdir() 和 fnmatch.fnmatch() 函数来完成的,而不是通过实际调用子 shell。 请注意,与 fnmatch.fnmatch() 不同,glob 将以点开头的文件名 (.
) 视为特殊情况。 (对于波浪号和 shell 变量扩展,使用 os.path.expanduser() 和 os.path.expandvars()。)
对于文字匹配,将元字符括在方括号中。 例如,'[?]'
匹配字符 '?'
。
- glob.glob(pathname)
- 返回匹配 pathname 的可能为空的路径名列表,该列表必须是包含路径规范的字符串。 pathname 可以是绝对的(如
/usr/src/Python-1.5/Makefile
)或相对的(如../../Tools/*/*.gif
),并且可以包含 shell 样式的通配符。 结果中包含损坏的符号链接(如在 shell 中)。
例如,考虑一个仅包含以下文件的目录:1.gif
、2.txt
和 card.gif
。 glob() 将产生以下结果。 请注意路径的任何前导组件是如何保留的。
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
如果目录包含以 .
开头的文件,它们将默认不匹配。 例如,考虑一个包含 card.gif
和 .card.gif
的目录:
>>> import glob
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']