Python通過fnmatch模塊實現(xiàn)文件名匹配
fnmatch 模塊主要用于文件名稱的匹配,其能力比簡單的字符串匹配更強大,但比使用正則表達式相比稍弱。。如果在數(shù)據(jù)處理操作中,只需要使用簡單的通配符就能完成文件名的匹配,則使用 fnmatch 模塊是不錯的選擇。
fnmatch 模塊中,常用的函數(shù)及其功能如表 1 所示。
Python fnmatch模塊常用函數(shù)及功能
函數(shù)名 功能 fnmatch.filter(names, pattern) 對 names 列表進行過濾,返回 names 列表中匹配 pattern 的文件名組成的子集合。 fnmatch.fnmatch(filename, pattern) 判斷 filename 文件名,是否和指定 pattern 字符串匹配 fnmatch.fnmatchcase(filename, pattern) 和 fnmatch() 函數(shù)功能大致相同,只是該函數(shù)區(qū)分大小寫。 fnmatch.translate(pattern) 將一個 UNIX shell 風(fēng)格的 pattern 字符串,轉(zhuǎn)換為正則表達式
fnmatch 模塊匹配文件名的模式使用的就是 UNIX shell 風(fēng)格,其支持使用如下幾個通配符:
*:可匹配任意個任意字符。 ?:可匹配一個任意字符。 [字符序列]:可匹配中括號里字符序列中的任意字符。該字符序列也支持中畫線表示法。比如 [a-c] 可代表 a、b 和 c 字符中任意一個。 [!字符序列]:可匹配不在中括號里字符序列中的任意字符。例如,下面程序演示表 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
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. php使用正則驗證密碼字段的復(fù)雜強度原理詳細講解 原創(chuàng)2. 基于javaweb+jsp實現(xiàn)企業(yè)車輛管理系統(tǒng)3. XML在語音合成中的應(yīng)用4. 基于PHP做個圖片防盜鏈5. jscript與vbscript 操作XML元素屬性的代碼6. Jsp+Servlet實現(xiàn)文件上傳下載 文件列表展示(二)7. asp.net core 認證和授權(quán)實例詳解8. ASP.NET MVC把數(shù)據(jù)庫中枚舉項的數(shù)字轉(zhuǎn)換成文字9. ASP.NET MVC使用Boostrap實現(xiàn)產(chǎn)品展示、查詢、排序、分頁10. ASP將數(shù)字轉(zhuǎn)中文數(shù)字(大寫金額)的函數(shù)
