创新互联Python教程:fnmatch—-Unix文件名模式匹配

fnmatch —- Unix 文件名模式匹配

源代码: Lib/fnmatch.py

成都创新互联公司总部坐落于成都市区,致力网站建设服务有网站设计、成都网站设计、网络营销策划、网页设计、网站维护、公众号搭建、成都小程序开发、软件开发等为企业提供一整套的信息化建设解决方案。创造真正意义上的网站建设,为互联网品牌在互动行销领域创造价值而不懈努力!


此模块提供了 Unix shell 风格的通配符,它们 并不 等同于正则表达式(关于后者的文档参见 re 模块)。 shell 风格通配符所使用的特殊字符如下:

模式

含意

*

匹配所有

?

匹配任何单个字符

[seq]

匹配 seq 中的任何字符

[!seq]

匹配任何不在 seq 中的字符

对于字面值匹配,请将原字符用方括号括起来。 例如,'[?]' 将匹配字符 '?'

注意文件名分隔符 (Unix 上为 '/') 不会 被此模块特别对待。 请参见 glob 模块了解文件名扩展 (glob 使用 filter() 来匹配文件名的各个部分)。 类似地,以一个句点打头的文件名也不会被此模块特别对待,可以通过 *? 模式来匹配。

Also note that functools.lru_cache() with the maxsize of 32768 is used to cache the compiled regex patterns in the following functions: fnmatch(), fnmatchcase(), filter().

fnmatch.fnmatch(filename, pattern)

检测 filename 字符串是否匹配 pattern 字符串,返回 True 或 False。 两个形参都会使用 os.path.normcase() 进行大小写正规化。 fnmatchcase() 可被用于执行大小写敏感的比较,无论这是否为所在操作系统的标准。

这个例子将打印当前目录下带有扩展名 .txt 的所有文件名:

 
 
 
 
  1. import fnmatch
  2. import os
  3. for file in os.listdir('.'):
  4. if fnmatch.fnmatch(file, '*.txt'):
  5. print(file)

fnmatch.fnmatchcase(filename, pattern)

检测 filename 是否匹配 pattern,返回 True 或 False;此比较是大小写敏感的,并且不会应用 os.path.normcase()。

fnmatch.filter(names, pattern)

基于可迭代对象 names 中匹配 pattern 的元素构造一个列表。 它等价于 [n for n in names if fnmatch(n, pattern)],但实现得更有效率。

fnmatch.translate(pattern)

返回 shell 风格 pattern 转换成的正则表达式以便用于 re.match()。

示例:

 
 
 
 
  1. >>> import fnmatch, re
  2. >>>
  3. >>> regex = fnmatch.translate('*.txt')
  4. >>> regex
  5. '(?s:.*\\.txt)\\Z'
  6. >>> reobj = re.compile(regex)
  7. >>> reobj.match('foobar.txt')

参见

模块 glob

Unix shell 风格路径扩展。

新闻名称:创新互联Python教程:fnmatch—-Unix文件名模式匹配
文章出自:http://www.gawzjz.com/qtweb/news7/173757.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联