fnamtch就是filenamematch,在python中利用符合linuxshell风格的匹配模块来进行文件名的匹配筛选工作。
:()函数匹配能力介于简单的字符串方法和强大的正则表达式之间,如果在数据处理操作中只需要简单的通配符就能完成的时候,这通常是一个比较合理的方案。此模块的主要作用是文件名称的匹配,并且匹配的模式使用的Unix shell风格。源码很简单:
”““文件名匹配与壳牌模式。 :文件名,模式)匹配根据当地的惯例。 fnmatchcase(文件名,模式)总是在帐户。 函数通过将模式转化为常规操作 表达式。他们为速度缓存编译正则表达式。 功能翻译(模式)返回一个正则表达式 对应的模式。(它不编译它。) ”“” 进口操作系统 进口posixpath 进口再保险 进口functools __all__=[“过滤器”,“:”,“fnmatchcase”,“翻译”) 名字,def:帕特): ”““测试文件名是否匹配模式。 模式是Unix shell风格: *匹配一切 & # 63;匹配任何单个的字符 seq (seq)匹配任何字符 [!seq)匹配任何字符seq 文件名的初期并不特殊。 文件名和模式都是第一个case-normalized 如果操作系统的需要。 如果你不想要这个,用fnmatchcase(文件名、模式)。 ”“” name=os.path.normcase(名字) 帕特=os.path.normcase (pat) 返回fnmatchcase(名称、帕特) @functools。类型=True lru_cache(最大容量=256) def _compile_pattern (pat): 如果isinstance (pat,字节): pat_str=str(帕特,“iso - 8859 - 1”) res_str=翻译(pat_str) res=字节(res_str“iso - 8859 - 1”) 其他: res=翻译(pat) 返回re.compile .match (res) def过滤器(名称、帕特): ”“返回列表的子集名称相匹配的帕特。” 结果=[] 帕特=os.path.normcase (pat) 匹配=_compile_pattern (pat) 如果操作系统。路径是posixpath: # normcase> def gen_find (filepat,): ”“” 查找符合壳正则匹配的目录树下的所有文件名 :param filepat:壳牌正则 :param:目录路径 返回:文件绝对路径生成器 ”“” _,路径文件名在os.walk(上): :文件。过滤器(文件名,filepat): 收益率os.path。加入(路径,文件) >之前:
#列出元组中所有的python文件 pyfiles=(py py(“重启。py”、“指数。php”、“file.txt”)如果:py, * . py)) #字符串的startswith()和endswith()方法对于过滤一个目录的内容也是很有用的fnmatchcase区分大小写的文件匹配
#这两个函数通常会被忽略的一个特性是在处理非文件名的字符串时候它们也是很有用的。比如,假设你有一个街道地址的列表数据 地址=[ “5412 N克拉克圣”, “1060 W艾迪生圣”, “1039 W格兰维尔大街”, “2122 N克拉克圣”, “4802 N百老汇”, ] 打印([addr addr的地址如果fnmatchcase (addr, * ST))) >之前翻译这个似乎很少有人用的到,前面说了:是Unix shell匹配风格,可以使用翻译将其转换为正则表达式,举个栗子
shell_match=癈elery_& # 63; * . py” print(翻译(shell_match)) #输出结果:(& # 63;销售:Celery_ . . * \ . py) \ ZCelery_ . . * \。py就是正则表达式的写法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Python中:模块的使用详情