Python檔名的匹配之clob庫

2022-09-28 20:42:27 字數 1056 閱讀 5141

既然在pathlib庫中提到了glob()函式,那麼我們就專門用一篇內容講解檔名的匹配。其實我們有專門的乙個檔名匹配庫就叫:glob。

不過,glob庫的api非常小,但是僅僅應用於檔名的匹程式設計客棧配綽綽有餘。只要是在實際的專案中需要過濾,或者匹配一組檔案,都可以使用該庫進行操作。

星號(*)

話不多說,下面我們使用萬用字元來匹配檔名,程式設計客棧示例如下:

import glob

for name in sorted(glob.uvqboxxkhsglob('text/*')):

print(name)

執行之後,效果如下:

這裡不僅用*萬用字元獲取了目錄下的所有檔案,而且還對其進行了排序。

問號(?)是用來匹配單字的,比如我們賽選上面1開頭的檔案。示例如下:

import glob

for name in glob.glob('text/1?.png'):

print(name)

執行之後,效果如下:

從上面兩個匹配我們看出來,glob庫的匹配規則與正規表示式有些相似。既然它能匹配模糊的,乙個或多個字元,那麼肯定也可以匹配區間字元。

示例如下:

import glob

for name in glowww.cppcns.comb.glob('text/15[a-z].*'):

print(name)

執行之後,效果如下:

當然,上面的檔名都是常規的檔名,都是用字母與數字組成的。但是,有些人比較怪,可能在檔名中包含了特殊的字元,比如上面的匹配字元「?*[」等。那怎麼辦呢?用反斜槓「\」轉義嗎?

其實,我們還有更簡單的,直接使用escape()函式進行操作。示例如下:

import glob

escape_str='?*'

for char in escape_str:

pattern = 'text/*' + glob.escape(char) + '.png'

for name in glob.glob(pattern):

print(name)

執行之後,效果如下:

shell學習之 檔名的匹配

shell程式設計之 檔名的匹配 shell提供了一套完整的字元匹配機制,這裡說明以下檔名的匹配規則。特殊字元 匹配檔名中的任何字串,包括空串 匹配檔名中的任意單個字元 匹配中所包含的任何字元 匹配中非感嘆號 之後的字元 1,使用 該符號可以匹配檔名中的任何字串,下面是一些實用的例子。2 ls do...

linux檔名匹配

匹配檔名中的任何字串,包括空字串。匹配檔名中的任何單個字元。匹配 中所包含的任何字元。匹配 中非感嘆號!之後的字元。如 s s開頭的所有字串 s s結尾的所有字串 s?以s為倒數第二個字元的字串 0 9 所有以數字的字元 a,b a或者b 0 9 不是數字的字元 ls user a n sh 列出 ...

fnmatch 檔名的正則匹配

fnmatch int fnmatch const char pattern,const char string,int flags man中是這麼寫道 the fnmatch function checks whether the string argument matches the patte...