On this page
glob — Unix 样式路径名模式扩展
源代码: Lib/glob.py
glob模块会根据 Unix Shell 使用的规则查找与指定模式匹配的所有路径名,尽管结果将以任意 Sequences 返回。没有波浪符号扩展,但是*
,?
和用[]
表示的字符范围将正确匹配。这是pass共同使用os.scandir()和fnmatch.fnmatch()函数来完成的,而不是pass实际调用子 shell 来完成的。请注意,与fnmatch.fnmatch()不同,glob将以点(.
)开头的文件名视为特殊情况。 (对于波浪号和 shell 变量扩展,请使用os.path.expanduser()和os.path.expandvars()。)
对于 Literals 匹配,请将元字符括在方括号中。例如,'[?]'
与字符'?'
匹配。
See also
pathlib模块提供高级路径对象。
glob.
glob
(* pathname ,**,* recursive = False *)- 返回与* pathname *匹配的路径名的可能为空的列表,该列表必须是包含路径说明的字符串。 * pathname *可以是绝对的(如
/usr/src/Python-1.5/Makefile
)或相对的(如../../Tools/*/*.gif
),并且可以包含 shell 样式的通配符。损坏的符号链接包含在结果中(如在 Shell 程序中)。结果是否排序取决于文件系统。
- 返回与* pathname *匹配的路径名的可能为空的列表,该列表必须是包含路径说明的字符串。 * pathname *可以是绝对的(如
如果* recursive *为 true,则模式“ **
”将匹配任何文件以及零个或多个目录,子目录和目录的符号链接。如果模式后跟os.sep或os.altsep,则文件将不匹配。
用参数pathname
,recursive
引发auditing event glob.glob
。
Note
在大型目录树中使用“ **
”模式可能会花费过多时间。
在版本 3.5 中更改:支持使用“ **
”的递归 glob。
用参数pathname
,recursive
引发auditing event glob.glob
。
glob.
escape
(* pathname *)- 转义所有特殊字符(
'?'
,'*'
和'['
)。如果要匹配其中可能包含特殊字符的任意 Literals 字符串,这将很有用。驱动器/ UNC 共享点中的特殊字符不会转义,例如在 Windows 上,escape('//?/c:/Quo vadis?.txt')
返回'//?/c:/Quo vadis[?].txt'
。
- 转义所有特殊字符(
3.4 版的新Function。
例如,考虑包含以下文件的目录:1.gif
,2.txt
,card.gif
和仅包含文件3.txt
的子目录sub
。 glob()将产生以下结果。注意如何保留路径的任何前导组件。
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
>>> glob.glob('**/*.txt', recursive=True)
['2.txt', 'sub/3.txt']
>>> glob.glob('./**/', recursive=True)
['./', './sub/']
如果目录包含以.
开头的文件,则默认情况下将不匹配它们。例如,考虑包含card.gif
和.card.gif
的目录:
>>> import glob
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']
See also
Module fnmatch
Shell 样式的文件名(非路径)扩展