溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python使用fnmatch模塊實(shí)現(xiàn)文件名匹配

發(fā)布時(shí)間:2020-10-29 19:15:46 來(lái)源:億速云 閱讀:147 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

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è)通配符:

  • *:可匹配任意個(gè)任意字符。
  • ?:可匹配一個(gè)任意字符。
  • [字符序列]:可匹配中括號(hào)里字符序列中的任意字符。該字符序列也支持中畫線表示法。比如 [a-c] 可代表 a、b 和 c 字符中任意一個(gè)。
  • [!字符序列]:可匹配不在中括號(hào)里字符序列中的任意字符。

例如,下面程序演示表 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í)。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI