glob
---Unix风格路径名模式扩展¶
源代码: Lib/glob.py
这个 glob
模块根据unix shell使用的规则查找与指定模式匹配的所有路径名,尽管结果以任意顺序返回。没有进行tilde扩展,但是 *
, ?
,和用表示的字符范围 []
将正确匹配。这是通过使用 os.scandir()
和 fnmatch.fnmatch()
函数协调一致,而不是通过实际调用子shell。注意,与 fnmatch.fnmatch()
, glob
处理以点开头的文件名 (.
)作为特殊情况。(对于tilde和shell变量扩展,请使用 os.path.expanduser()
和 os.path.expandvars()
)
对于文本匹配,请将元字符括在括号中。例如, '[?]'
与角色匹配 '?'
.
参见
这个 pathlib
模块提供高级路径对象。
- glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False)¶
返回可能为空的匹配路径名列表 路径名 ,必须是包含路径规范的字符串。 路径名 可以是绝对的(比如
/usr/src/Python-1.5/Makefile
)或亲属(如../../Tools/*/*.gif
),并且可以包含shell样式的通配符。断开的符号链接包含在结果中(如在shell中)。结果是否排序取决于文件系统。如果在调用此函数期间删除或添加了满足条件的文件,则未指定是否包含该文件的路径名。如果 root_dir 不是
None
,应该是 path-like object 指定要搜索的根目录。它对glob()
在调用前更改当前目录。如果 路径名 是相对的,结果将包含相对于 root_dir .此功能可以支持 paths relative to directory descriptors 与 dir_fd 参数。
如果 递归的 是的,模式“``**”将匹配任何文件以及零个或多个目录、子目录和指向目录的符号链接。如果模式后面跟着 :data:`os.sep 或
os.altsep
然后文件将不匹配。提出一个 auditing event
glob.glob
带着论据pathname
,recursive
.注解
使用“
**
“大目录树中的模式可能会消耗大量的时间。在 3.5 版更改: 支持递归全局,使用“
**
“。在 3.10 版更改: 增加了 root_dir 和 dir_fd 参数。
- glob.iglob(pathname, *, root_dir=None, dir_fd=None, recursive=False)¶
返回一 iterator 产生的值与
glob()
而不是同时存储它们。提出一个 auditing event
glob.glob
带着论据pathname
,recursive
.
- glob.escape(pathname)¶
转义所有特殊字符 (
'?'
,'*'
和'['
)如果要匹配可能包含特殊字符的任意文本字符串,这将非常有用。驱动器/UNC共享点中的特殊字符不会转义,例如在Windows上escape('//?/c:/Quo vadis?.txt')
返回'//?/c:/Quo vadis[?].txt'
.3.4 新版功能.
例如,考虑包含以下文件的目录: 1.gif
, 2.txt
, card.gif
和一个子目录 sub
它只包含文件 3.txt
. 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']
参见
- 模块
fnmatch
shell样式文件名(非路径)扩展