新聞中心
glob —- Unix 風格路徑名模式擴展
源代碼:Lib/glob.py

glob 模塊會按照 Unix shell 所使用的規(guī)則找出所有匹配特定模式的路徑名稱,但返回結果的順序是不確定的。 波浪號擴展不會生效,但 *, ? 以及用 [] 表示的字符范圍將被正確地匹配。 這是通過配合使用 os.scandir() 和 fnmatch.fnmatch() 函數(shù)來實現(xiàn)的,而不是通過實際發(fā)起調(diào)用子 shell。
請注意以點號 (.) 打頭的文件只能用同樣以點號打頭的模式來匹配,這不同于 fnmatch.fnmatch() 或 pathlib.Path.glob()。 (對于波浪號和 shell 變量擴展,請使用 os.path.expanduser() 和 os.path.expandvars()。)
對于字面值匹配,請將原字符用方括號括起來。 例如,'[?]' 將匹配字符 '?'。
參見
pathlib 模塊提供高級路徑對象。
glob.glob(pathname, **, root_dir=None, dir_fd=None, recursive=False, include_hidden=False*)
Return a possibly empty list of path names that match pathname, which must be a string containing a path specification. pathname can be either absolute (like /usr/src/python-1.5/Makefile) or relative (like ../../Tools/*/*.gif), and can contain shell-style wildcards. Broken symlinks are included in the results (as in the shell). Whether or not the results are sorted depends on the file system. If a file that satisfies conditions is removed or added during the call of this function, whether a path name for that file be included is unspecified.
如果 root_dir 不為 None,則它應當是指明要搜索的根目錄的 path-like object。 它用在 glob() 上與在調(diào)用它之前改變當前目錄有相同的效果。 如果 pathname 為相對路徑,結果將包含相對于 root_dir 的路徑。
本函數(shù)帶有 dir_fd 參數(shù),支持 基于目錄描述符的相對路徑。
如果 recursive 為真值,則模式 “**“ 將匹配目錄中的任何文件以及零個或多個目錄、子目錄和符號鏈接。 如果模式加了一個 os.sep 或 os.altsep 則將不匹配文件。
If include_hidden is true, “**“ pattern will match hidden directories.
引發(fā)一個 審計事件 glob.glob 附帶參數(shù) pathname, recursive。
引發(fā)一個 審計事件 glob.glob/2,附帶參數(shù) pathname, recursive, root_dir, dir_fd。
備注
在一個較大的目錄樹中使用 “**“ 模式可能會消耗非常多的時間。
在 3.5 版更改: 支持使用 “**“ 的遞歸 glob。
在 3.10 版更改: 添加了 root_dir 和 dir_fd 形參。
在 3.11 版更改: Added the include_hidden parameter.
glob.iglob(pathname, **, root_dir=None, dir_fd=None, recursive=False, include_hidden=False*)
返回一個 iterator,它會產(chǎn)生與 glob() 相同的結果,但不會實際地同時保存它們。
引發(fā)一個 審計事件 glob.glob 附帶參數(shù) pathname, recursive。
引發(fā)一個 審計事件 glob.glob/2,附帶參數(shù) pathname, recursive, root_dir, dir_fd。
在 3.5 版更改: 支持使用 “**“ 的遞歸 glob。
在 3.10 版更改: 添加了 root_dir 和 dir_fd 形參。
在 3.11 版更改: Added the include_hidden parameter.
glob.escape(pathname)
轉義所有特殊字符 ('?', '*' 和 '[')。 這適用于當你想要匹配可能帶有特殊字符的任意字符串字面值的情況。 在 drive/UNC 共享點中的特殊字符不會被轉義,例如在 Windows 上 escape('//?/c:/Quo vadis?.txt') 將返回 '//?/c:/Quo vadis[?].txt'。
3.4 新版功能.
例如,考慮一個包含以下內(nèi)容的目錄:文件 1.gif, 2.txt, card.gif 以及一個子目錄 sub 其中只包含一個文件 3.txt. glob() 將產(chǎn)生如下結果。 請注意路徑的任何開頭部分都將被保留。:
>>> 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 風格文件名(而非路徑)擴展
文章題目:創(chuàng)新互聯(lián)Python教程:glob—-Unix風格路徑名模式擴展
文章分享:http://m.5511xx.com/article/dpshjdo.html


咨詢
建站咨詢
