11.7. glob — Unix 风格路径名模式扩展


    模块可根据 Unix 终端所用规则找出所有匹配特定模式的路径名,但会按不确定的顺序返回结果。 波浪号扩展不会生效,但 , ? 以及表示为 [] 的字符范围将被正确地匹配。 这是通过配合使用 os.scandir() 和 函数来实现的,而不是通过实际发起调用子终端。 请注意不同于 fnmatch.fnmatch(), 会将以点号 (.) 开头的文件名作为特殊情况来处理。 (对于波浪号和终端变量扩展,请使用 os.path.expanduser() 和 。)

    对于字面值匹配,请将原字符用方括号括起来。 例如,'[?]' 将匹配字符 '?'

    参见

    pathlib 模块提供高级路径对象。

    glob.glob(pathname, **, recursive=False*)

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

    注解

    在一个较大的目录树中使用 “” 模式可能会消耗非常多的时间。

    在 3.5 版更改: 支持使用 “**” 的递归 glob.

    glob.iglob(pathname, **, recursive=False*)

    返回一个 ,它会产生与 glob() 相同的结果,但不会实际地同时保存它们。

    glob.escape(pathname)

    3.4 新版功能.

    例如,考虑一个包含以下内容的目录:文件 1.gif, 2.txt, 以及一个子目录 sub 其中只包含一个文件 3.txt. 将产生如下结果。 请注意路径的任何开头部分都将被保留。:

    如果目录包含以 . 打头的文件,它们默认将不会被匹配。 例如,考虑一个包含 card.gif.card.gif 的目录:

    1. >>> import glob
    2. ['card.gif']
    3. ['.card.gif']

    参见

    模块 fnmatch

    Shell 风格文件名(而非路径)扩展