python fnmatch 学习小结

fnmatch主要是用来判断一个文件名是否匹配”Unix shell-style wildcards”这种模式,就是平常用的那种ls *.log这样,看是否匹配。

用法很简单,常用也就这两个函数fnmatch/filter:

In [36]: import fnmatch
In [37]: import os

#判断文件名是否匹配某个模式
In [38]: for file in os.listdir('/data0/log/trafficserver/'):
   ....:     if fnmatch.fnmatch(file,'*.log'):
   ....:         print file
   ....:
squid.log
diags.log
custom.log
manager.log
error.log

#过滤列表中匹配某个模式的文件名
In [39]: fnmatch.filter(os.listdir('/data0/log/trafficserver/'),'*.log')
Out[39]: ['squid.log', 'diags.log', 'custom.log', 'manager.log', 'error.log']

#当然也可以这么做,不过官方说filter函数做的有优化
In [41]: [file for file  in os.listdir('/data0/log/trafficserver/') if fnmatch.fnmatch(file,'*.log')]
Out[41]: ['squid.log', 'diags.log', 'custom.log', 'manager.log', 'error.log']

这个模块很简单,源码还不到100行,有需要直接看官方文档和源码就行了。


参考资料:

fnmatch 官方文档:https://docs.python.org/2/library/fnmatch.html