python 标准库之 glob
在严寒的冬季,温暖人的只有笑脸了吧。
今天继续给大家介绍python标准库 glob
glob
模块可根据 Unix 终端所用规则找出所有匹配特定模式的路径名,但会按不确定的顺序返回结果。支持查找文件只用到三个匹配符:’*’, “?”, “[ ]”,不包括波浪线~,因为这个符号在linux代表当前用户的home目录。
对于波浪号和终端变量扩展,请使用 os.path.expanduser()
和 os.path.expandvars()
)。
根据阅读代码发现,这个底层使用cpython实现, 有兴趣的童鞋可以移步到源代码: Lib/glob.py
相对于高级面向对象路径查找模块pathlib ,glob更偏向底层实现。
函数
glob.glob(pathname, *, recursive=False)
返回匹配 pathname 的可能为空的路径名列表,其中的元素必须为包含一个路径信息的字符串。 pathname 可以是绝对路径 (如
/usr/src/Python-1.5/Makefile
) 或相对路径 (如../../Tools/*/*.gif
),并且可包含 shell 风格的通配符。 结果也将包含无效的符号链接 (与在 shell 中一致)。 结果是否排序取决于具体文件系统。如果 recursive 为真值,则模式 “
**
“ 将匹配目录中的任何文件以及零个或多个目录、子目录和符号链接。 如果模式加了一个os.sep
或os.altsep
则将不匹配文件。备注:在一个较大的目录树中使用 “
**
“ 模式可能会消耗非常多的时间。 3.5 版更改: 支持使用 “**
“ 的递归 globglob.iglob(pathname, *, recursive=False)
glob.escape(pathname)
转义所有特殊字符 (
'?'
,'*'
和'['
)。 这适用于当你想要匹配可能带有特殊字符的任意字符串字面值的情况。 在 drive/UNC 共享点中的特殊字符不会被转义,例如在 Windows 上escape('//?/c:/Quo vadis?.txt')
将返回'//?/c:/Quo vadis[?].txt'
。