您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何使用fnmatch模塊,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
此模塊的主要作用是文件名稱的匹配,并且匹配的模式使用的unix shell風格。
fnmatch比較簡單就4個方法分別是:fnmatch,fnmatchcase,filter,translate
fnmatch.fnmatch(filename, pattern)
測試filename,是否符合pattern。
import fnmatch
import os
def run():
for file in os.listdir('.'): #os.listdir返回指定的文件夾包含的文件或文件夾的名字的列表
if fnmatch.fnmatch(file, '*.py'): #判斷是否有后綴為.py的文件,*代表文件名長度格式不限制。
print(file)
if __name__ == '__main__':
run()
fnmatch.fnmatchcase(filename, pattern)
和fnmatch()類似,只是fnmatchcase 強制區分大小寫匹配,不管文件系統是否區分。
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
fnmatch.filter(names, pattern)
實現列表特殊字符的過濾或篩選,返回符合匹配模式的字符列表,它的作用類似
[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")) #匹配前面是一個字符的.py文件
輸出:d.py
fnmatch.translate(pattern):
翻譯模式, fnmatch將這種全局模式轉換成一個正則式, 然后使用re模塊來比較名字和模式。 translate() 函數是一個公共API用于將全局模式轉換成正則式
regex = fnmatch.translate('[f,d,d,d,g,h].txt')#將[f,d,d,d,g,h].txt轉為正則匹配的模式
print("regex",regex)#(?s:[f,d,d,d,g,h]\.txt)\Z
#\Z:匹配字符串結束,如果是存在換行,只匹配到換行前的結束字符串。
reobj = re.compile(regex)#生成re匹配模塊
print(reobj.match ('f.txt'))#返回一個匹配對象
#<_sre.SRE_Match object; span=(0, 5), match='f.txt'>
看完上述內容,你們對如何使用fnmatch模塊有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。