主要作为是获取匹配模式的目录和文件名, 类似于Unix的find指令, 当然, 只是个文件名匹配, 功能还是远没有find强大.
方法
- glob.glob(pathname): 返回找到匹配的文件/目录的列表. 支持
*?[]
的简单通配符匹配(对于.
开头文件特殊处理,不被*?
匹配) - glob.iglob(pathname): glob方法类似, 但返回的是迭代器, 迭代出每个结果. 对于大量文件时更为省内存.
- 建议在for循环中使用
iglob
方法. - 注意匹配返回的是和路径格式相关的. 例如pname为
./*.pdf
搜出来 “./a.pdf”, 而*.pdf
返回 “a.pdf”. - 对于目录,
*
找出来的是目录名+文件名,*/
找出来的是 “a/” 或者a\\
(window下). 可以进一步strip(‘/’).strip(‘\‘)去掉. 也可以用os.path.isdir()
判断是否目录
另外, glob模块还有以下东东:
- glob.glob0(dir,path): 要是存在dir+os.sep+path 就返回[path]. 基础判断函数, 用来加法吧..
- glob.glob1(dir,pattern): 就是返回目录下匹配模式的. glob主要靠他.
- glob.has_magic(s) : 判断字符串里是否有通配符, 有就返回True.
- glob.magic_check : 一个re的正则表达式对象
- glob.re/os/sys/fnmatch: 用到的模块