App下載

Python文件名的匹配之clob庫

酷酷的小傻子 2021-08-20 10:41:21 瀏覽數(shù) (2232)
反饋

既然在Pathlib庫中提到了glob()函數(shù),那么我們就專門用一篇內(nèi)容講解文件名匹配。其實我們有專門的一個文件名匹配庫就叫:glob。不過,glob庫的API非常小,但是僅僅應(yīng)用于文件名的匹配綽綽有余。只要是在實際的項目中需要過濾,或者匹配一組文件,都可以使用該庫進(jìn)行操作。

通配符

星號(*)

話不多說,下面我們使用通配符來匹配文件名,示例如下:

import glob

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

運(yùn)行之后,效果如下:

效果

這里不僅用*通配符獲取了目錄下的所有文件,而且還對其進(jìn)行了排序。

問號(?)

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

import glob

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

運(yùn)行之后,效果如下:

問號

區(qū)間匹配([0-9][a-z][A-Z])

從上面兩個匹配我們看出來,glob庫的匹配規(guī)則與正則表達(dá)式有些相似。既然它能匹配模糊的,一個或多個字符,那么肯定也可以匹配區(qū)間字符。

示例如下:

import glob

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

運(yùn)行之后,效果如下:

匹配區(qū)間

轉(zhuǎn)義元字符

當(dāng)然,上面的文件名都是常規(guī)的文件名,都是用字母與數(shù)字組成的。但是,有些人比較怪,可能在文件名中包含了特殊的字符,比如上面的匹配字符“?*[”等。那怎么辦呢?用反斜杠“”轉(zhuǎn)義嗎?

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

import glob

escape_str='?*[]'
for char in escape_str:
    pattern = 'text/*' + glob.escape(char) + '.png'
    for name in glob.glob(pattern):
        print(name)

運(yùn)行之后,效果如下:

運(yùn)行效果

到此python文件名匹配庫——clob庫就介紹到這了,更多使用Python庫請搜索W3Cschool以前的文章或繼續(xù)瀏覽下面的相關(guān)文章。

0 人點贊