溫馨提示×

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

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

如何使用fnmatch模塊

發(fā)布時(shí)間:2021-07-30 17:15:41 來源:億速云 閱讀:109 作者:Leah 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)如何使用fnmatch模塊,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。


fnmatch模塊的使用

此模塊的主要作用是文件名稱的匹配,并且匹配的模式使用的unix shell風(fēng)格。
fnmatch比較簡(jiǎn)單就4個(gè)方法分別是:fnmatch,fnmatchcase,filter,translate

如何使用fnmatch模塊  
 

1.fnmatch

fnmatch.fnmatch(filename, pattern)
測(cè)試filename,是否符合pattern。

import fnmatch
import os
def run():
  for file in os.listdir('.'): #os.listdir返回指定的文件夾包含的文件或文件夾的名字的列表
        if fnmatch.fnmatch(file, '*.py'): #判斷是否有后綴為.py的文件,*代表文件名長(zhǎng)度格式不限制。
           print(file)
if __name__ == '__main__':
    run()
   

2.fnmatchcase

fnmatch.fnmatchcase(filename, pattern)
和fnmatch()類似,只是fnmatchcase 強(qiáng)制區(qū)分大小寫匹配,不管文件系統(tǒng)是否區(qū)分。

  print(fnmatch.fnmatchcase("text.py","text.*"))  #True
  print(fnmatch.fnmatchcase("Text.py", "text.*"))  # False
  print(fnmatch.fnmatchcase("Text.Py", "*.py"))  # False
  print(fnmatch.fnmatchcase("Text.Py", "*.Py"))  # True
   

3.filter

fnmatch.filter(names, pattern)
實(shí)現(xiàn)列表特殊字符的過濾或篩選,返回符合匹配模式的字符列表,它的作用類似
[n for n in names if fnmatch(n, pattern)]

  filelist=["a.text","b.jpg","c.png","d.py",'e.text',"sss.py"]
  print(fnmatch.filter(filelist,"?.py")) #匹配前面是一個(gè)字符的.py文件
  輸出:d.py
   

4.translate

fnmatch.translate(pattern):
翻譯模式, fnmatch將這種全局模式轉(zhuǎn)換成一個(gè)正則式, 然后使用re模塊來比較名字和模式。 translate() 函數(shù)是一個(gè)公共API用于將全局模式轉(zhuǎn)換成正則式

regex = fnmatch.translate('[f,d,d,d,g,h].txt')#將[f,d,d,d,g,h].txt轉(zhuǎn)為正則匹配的模式
print("regex",regex)#(?s:[f,d,d,d,g,h]\.txt)\Z
#\Z:匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串。
reobj = re.compile(regex)#生成re匹配模塊
print(reobj.match ('f.txt'))#返回一個(gè)匹配對(duì)象
#<_sre.SRE_Match object; span=(0, 5), match='f.txt'>

看完上述內(nèi)容,你們對(duì)如何使用fnmatch模塊有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(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