10.7. globUnix 风格的扩展路径名模式

源码:Lib/glob.py


glob 模块根据 Unix shell 使用的规则查找所有与指定模式匹配的路径名。不支持波浪字符扩展,但可以正确匹配 *? 和用 [] 表示的字符范围。这通过使用 os.listdir()fnmatch.fnmatch() 函数实现,而不是真正地调用一个子 shell。请注意,与 fnmatch.fnmatch() 不同,glob 将以点(.)开头的文件名当做特殊情况处理。(对于波浪字符和 shell 变量扩展,使用 os.path.expanduser()os.path.expandvars()。)

对一个字面量的匹配,请将元字符包含在方括号中。例如,[?]' 匹配字符 '?'

glob.glob(pathname)

返回一个匹配 pathname 的路径名列表,列表可能为空,pathname 必须是一个包含路径信息的字符串。pathname 可以是绝对的(比如/usr/src/Python-1.5/Makefile)也可以是相对的(比如../../Tools/*/*.gif),且可以包含 shell 风格的通配符。损坏的符号链接也包含在结果中(和在 shell 中一样)。

glob.iglob(pathname)

返回一个 迭代器,它产生和 glob() 相同的值,但不会真正同时地保存它们。

版本 2.5 新增。

例如,假设有一个只包含以下文件的目录: 1.gif 2.txtcard.gifglob () 将产生以下结果。请注意如何保留任何领先的组件的路径。

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

请参见

模块 fnmatch
Shell 风格的文件名(不是路径)扩展