今天就跟大家聊聊有关如何使用fnmatch模块,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
此模块的主要作用是文件名称的匹配,并且匹配的模式使用的unix shell风格。
fnmatch比较简单就4个方法分别是:fnmatch,fnmatchcase,filter,translate
fnmatch.fnmatch(filename, pattern)
测试filename,是否符合pattern。
import fnmatchimport osdef 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模块有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4042528/blog/4634899