python模块学习之glob模块
glob模塊
功能描述:glob模塊可以使用Unix shell風(fēng)格的通配符匹配符合特定格式的文件和文件夾,跟windows的文件搜索功能差不多。glob模塊并非調(diào)用一個(gè)子shell實(shí)現(xiàn)搜索功能,而是在內(nèi)部調(diào)用了os.listdir()和fnmatch.fnmatch()。查看我之前寫的fnmatch。
glob模塊共包含以下3個(gè)函數(shù):glob,isglob和escape。
glob(pathname, recursive=False)
第一個(gè)參數(shù)為需要匹配的字符串.(盡量在字符串前加r)
第二個(gè)參數(shù)代表遞歸調(diào)用,與特殊通配符“**”一同使用,默認(rèn)為False。?
路徑格式可以是絕對(duì)路徑 /usr/src/Python-1.5/Makefile ,也可以是相對(duì)路徑../../Tools//.gif。
在3.5版本之后,glob函數(shù)支持一個(gè)特殊的通配符“**”,該通配符可以匹配指定路徑里所有文件和目錄,包括子目錄里的所有文件和目錄。使用這個(gè)通配符必須加上recursive=True參數(shù)。?
(在有復(fù)雜目錄結(jié)構(gòu)的情況下使用該通配符可能會(huì)導(dǎo)致性能下降,拖累整個(gè)程序的運(yùn)行,需謹(jǐn)慎使用!)
例如,目錄中包含文件: 1.gif, 2.txt, card.gif里面含有子目錄sub,sub目錄里含有3.txt.
>?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/']
需要注意的是如果,文件名的前面含有點(diǎn)像這樣,card.gif 和.card.gif,需要下面這樣的方式處理通配符前加.
>?import?glob>?glob.glob('*.gif')
['card.gif']
>?glob.glob('.*.gif')
['.card.gif']
iglob(pathname, recursive=False)
參數(shù)與glob()一致。?
返回一個(gè)迭代器,遍歷該迭代器的結(jié)果和glob()的返回結(jié)果一致。
escape(pathname)
轉(zhuǎn)義所有的特殊字符('?','*'和'['])。如果您想匹配任意可能包含特殊字符的字符串,這將非常有用。驅(qū)動(dòng)器/ UNC共享點(diǎn)中的特殊字符不會(huì)轉(zhuǎn)義,例如在Windows系統(tǒng)上 escape('//?/c:/Quo vadis?.txt') 將返回 '//?/c:/Quo vadis[?].txt'。但是這些非法字符是無(wú)法創(chuàng)建文件的所以一般也就用來(lái)測(cè)試用了。
總結(jié)
以上是生活随笔為你收集整理的python模块学习之glob模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【实数二分/前缀和维护】Best Cow
- 下一篇: 选择题微型计算机系统包括,全国计算机一级