glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False)
其功能是返回一个与pathname匹配的路径名列表(该列表可以为空,必须是符合路径规范的字符串)
pathname: 既可以是绝对路径( /usr/src/Python-1.5/Makefile),也可以是相对路径(…/…/Tools//.gif),并且可以包含shell样式的通配符。
root_dir:如果root_dir不是None,则它应该是一个类似路径的对象,指定要搜索的根目录。它对glob()的作用与在调用当前目录之前更改它的作用相同。如果路径名是相对的,则结果将包含相对于根目录的路径。
recursive:如果recursive为true,则模式“**”将匹配任何文件以及零个或多个目录、子目录和指向目录的符号链接。如果模式后跟(os.sep)或(os.altsep),则文件将不匹配。
以上是官方文档里的内容,很抽象,不过接下来上一个实例就简介明了了:
>>> 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/']
倒数两个例子中可以看出,当 recursive=True时 模式“**”也会对子文件夹sub里的内容进行遍历。
如果目录包含以(.)开头的文件,默认情况下,它们不会匹配。(card.gif 和 .card.gif,可自行在文件加里加入.card.gif 尝试)
>>> import glob
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']