You are here:  Home » Python » glob-Unix风格的路径名模式扩展(7)Python文件和目录访问模块(必读进阶Python教程)(参考资料)

glob模块发现所有匹配的根据由Unix外壳使用的规则指定模式的路径名,尽管结果在任意的顺序返回。没有进行波浪线扩展,但是*?和表示的字符范围[]将正确匹配。这是通过使用os.scandir()fnmatch.fnmatch()声音中的和函数来完成的,而不是通过实际调用子shell来完成的。需要注意的是不像fnmatch.fnmatch(), glob把以点(开始的文件名.)作为特殊情况。(对于波形符和贝壳变量扩展,请使用os.path.expanduser()os.path.expandvars()。)

对于文字匹配,将元字符包装在括号中。例如,'[?]'匹配角色'?'

也可以看看

pathlib模块提供高级路径对象。

glob.globpathname*recursive = False 
返回匹配的路径名可能空单路径,它必须包含路径规范的字符串。pathname可以是绝对(like /usr/src/Python-1.5/Makefile)或相对(like ../../Tools/*/*.gif),也可以包含shell样式的通配符。结果中包含损坏的符号链接(如在shell中)。

如果recursive为true,则模式“ **”将匹配任何文件以及零个或多个目录和子目录。如果模式后跟a os.sep,则只有目录和子目录匹配。

注意

**在大型目录树中使用“ ”模式可能会消耗过多的时间。

在版本3.5中更改:使用“ **” 支持递归globs 。

glob.iglobpathname*recursive = False 
返回一个迭代器,它产生相同的值,glob() 而不是实际同时存储它们。
glob.escape路径名
转义所有特殊字符('?''*''[')。如果要匹配可能包含特殊字符的任意文字字符串,这将非常有用。驱动器/ UNC共享点中的特殊字符不会被转义,例如在Windows 返回时。escape('//?/c:/Quovadis?.txt')'//?/c:/Quo vadis[?].txt'

版本3.4中的新功能。

例如,考虑包含以下文件的目录: 1.gif2.txtcard.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样式的文件名(不是路径)扩展