python标准库之glob模块
在Linux下我们可以使用ls
命令列出满足通配条件的文件,但是在python中os.listdir(dirname)
中无法使用通配符,当然我们使用re模块配合os.lisrdir
,os.path
使用也可以达到目的,但是这个方法不够native。
好在这是一个非常使用的功能,python标准库中就提供glob
模块达到此效果,下面我们就来讲讲怎么使用python下的glob
模块得到模糊匹配文件(模糊搜索文件,使用通配符匹配文件)。
方法/函数
方法名 | args | 参数说明 | 返回说明 |
glob | (pathname, recursive=False) | pathname为需要匹配的字符串, recursive代表递归调用,与特殊通配符** 一同使用,默认为False | 返回一个所有符合通配字符串的路径(文件和子目录)列表 |
iglob | (pathname, recursive=False) | 同上 | 同上,但是返回的是一个迭代器, |
支持的通配符
通配符 | 功能 |
* | 匹配0或多个字符 |
** | 匹配所有文件、目录、子目录和子目录里的文件(3.5版本新增) |
? | 匹配1个字符,与正则表达式里的?不同 |
[exp] | 匹配指定范围内的字符,如:[1-9]匹配1至9范围内的字符 |
[!exp] | 匹配不在指定范围内的字符 |
示例
import glob
# 找到/path/to/ 目录下所有的以png结尾的文件和目录
png_list = glob.glob("/path/to/*.png")
# 返回迭代器
png_iter = glob.iglob("/path/to/*.csv")
# 返回/path/to目录下所有文件/子目录
png_iter = glob.iglob("/path/to/**", recursive=True)