原文:glob — Unix style pathname pattern expansion
glob — Unix样式路径名模式扩展
源代码:Lib / glob.py
尽管结果以任意顺序返回,glob模块根据Unix shell使用的规则查找与指定模式匹配的所有路径名。没有波浪线扩展,但是* 、?和用[]表示的字符范围将正确匹配,这是通过协同使用os.scandir()和fnmatch.fnmatch()函数来完成的,而不是通过实际调用子shell来完成的。请注意,与fnmatch.fnmatch()不同,glob将以点(.)开头的文件名视为特殊情况。 (对于波浪号和shell变量扩展,请使用os.path.expanduser()和os.path.expandvars()。)
对于文字匹配,请将元字符括在方括号中。例如,“ [?]”与字符“?”匹配。
也可以查看
pathlib模块提供高级路径对象。
glob.glob(路径名,*,递归= False)
返回与路径名匹配的路径名的可能为空的列表,该列表必须是包含路径说明的字符串。路径名可以是绝对路径(例如/usr/src/Python-1.5/Makefile),也可以是相对路径(例如…/…/Tools//.gif),并且可以包含shell样式的通配符。损坏的符号链接包含在结果中(如在shell程序中)。结果是否排序取决于文件系统。
如果递归为true,则模式“ **”将匹配任何文件以及零个或多个目录,子目录和目录的符号链接。如果模式后面跟随os.sep或os.altsep,则文件将不匹配。
注意
在大型目录树中使用“ **”模式可能会花费大量时间。
在版本3.5中进行了更改:支持使用“ **”的递归glob。
glob.iglob(路径名,*,递归= False)
返回一个迭代器,该迭代器产生与glob()相同的值,而实际上并没有同时存储它们。
引发带参数路径名(递归)的审核事件glob.glob。
glob.escape(路径名)
转义所有特殊字符(“?”,“ *”和“ [”)。如果要匹配其中可能包含特殊字符的任意文字字符串,此功能很有用。drive/ UNC共享点中的特殊字符不会转义,e.g. on Windows escape(’//?/c:/Quo vadis?.txt’) returns ‘//?/c:/Quo vadis[?].txt’.
如果目录包含以“.”开头的文件。 默认情况下不会匹配它们。 例如,考虑包含card.jpg和.card.jpg的目录:
import glob
glob.glob('C:/Users/Administrator/Desktop/code/test_code/*.jpg')
#['C:/Users/Administrator/Desktop/code/test_code\\card.jpg']
glob.glob('C:/Users/Administrator/Desktop/code/test_code/.c*')
#['C:/Users/Administrator/Desktop/code/test_code\\.card.jpg']