10.7. glob — Unix 样式路径名模式扩展

源代码: Lib/glob.py


glob模块会根据 Unix Shell 使用的规则查找与指定模式匹配的所有路径名,尽管结果将以任意 Sequences 返回。没有波浪符号扩展,但是*?和用[]表示的字符范围将正确匹配。这是pass共同使用os.listdir()fnmatch.fnmatch()函数来完成的,而不是pass实际调用子 shell 来完成的。请注意,与fnmatch.fnmatch()不同,glob将以点(.)开头的文件名视为特殊情况。 (对于波浪号和 shell 变量扩展,请使用os.path.expanduser()os.path.expandvars()。)

对于 Literals 匹配,请将元字符括在方括号中。例如,'[?]'与字符'?'匹配。

  • glob. glob(* pathname *)

    • 返回与* pathname *匹配的路径名的可能为空的列表,该列表必须是包含路径说明的字符串。 * pathname *可以是绝对的(如/usr/src/Python-1.5/Makefile)或相对的(如../../Tools/*/*.gif),并且可以包含 shell 样式的通配符。损坏的符号链接包含在结果中(如在 Shell 程序中)。
  • glob. iglob(* pathname *)

    • 返回一个iterator,它产生的值与glob()相同,而实际上并没有同时存储它们。

2.5 版的新Function。

例如,考虑一个仅包含以下文件的目录:1.gif2.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']

See also

  • Module fnmatch

  • Shell 样式的文件名(非路径)扩展