您好,登錄后才能下訂單哦!
Python使用fnmatch模塊實(shí)現(xiàn)文件名匹配?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
fnmatch 模塊主要用于文件名稱的匹配,其能力比簡(jiǎn)單的字符串匹配更強(qiáng)大,但比使用正則表達(dá)式相比稍弱。。如果在數(shù)據(jù)處理操作中,只需要使用簡(jiǎn)單的通配符就能完成文件名的匹配,則使用 fnmatch 模塊是不錯(cuò)的選擇。
fnmatch 模塊中,常用的函數(shù)及其功能如表 1 所示。
Python fnmatch模塊常用函數(shù)及功能
函數(shù)名 | 功能 |
fnmatch.filter(names, pattern) | 對(duì) names 列表進(jìn)行過(guò)濾,返回 names 列表中匹配 pattern 的文件名組成的子集合。 |
fnmatch.fnmatch(filename, pattern) | 判斷 filename 文件名,是否和指定 pattern 字符串匹配 |
fnmatch.fnmatchcase(filename, pattern) | 和 fnmatch() 函數(shù)功能大致相同,只是該函數(shù)區(qū)分大小寫。 |
fnmatch.translate(pattern) | 將一個(gè) UNIX shell 風(fēng)格的 pattern 字符串,轉(zhuǎn)換為正則表達(dá)式 |
fnmatch 模塊匹配文件名的模式使用的就是 UNIX shell 風(fēng)格,其支持使用如下幾個(gè)通配符:
例如,下面程序演示表 1 中一些函數(shù)的用法及功能:
import fnmatch #filter() print(fnmatch.filter(['dlsf', 'ewro.txt', 'te.py', 'youe.py'], '*.txt')) #fnmatch() for file in ['word.doc','index.py','my_file.txt']: if fnmatch.fnmatch(file,'*.txt'): print(file) #fnmatchcase() print([addr for addr in ['word.doc','index.py','my_file.txt','a.TXT'] if fnmatch.fnmatchcase(addr, '*.txt')]) #translate() print(fnmatch.translate('a*b.txt'))
程序執(zhí)行結(jié)果為:
['ewro.txt']
my_file.txt
['my_file.txt']
(?s:a.*b\.txt)\Z
關(guān)于Python使用fnmatch模塊實(shí)現(xiàn)文件名匹配問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。