python glob fnmatch 用于文件查找操作

参考:

http://python.jobbole.com/81552/:Python模块学习:glob文件路径查找

http://blog.csdn.net/suiyunonghen/article/details/4517103:python中的一个好用的文件名操作模块glob

https://docs.python.org/2/library/glob.html:10.7. glob - Unix style pathname pattern expansion

https://docs.python.org/2/library/fnmatch.html#module-fnmatch:10.8. fnmatch - Unix filename pattern matching


#################################################################3


测试集文件分布情况:



3##############################################################3


本人glob源码位置:/usr/lib/python2.7/glob.py



函数名:glob

参数名:pathname - 路径名(可以使用相对路径或绝对路径)

功能:返回一个列表,存储所有匹配你参数名的文件路径(当你使用相对路径时,文件路径为相对路径;当你使用绝对路径时,文件路径为绝对路径)

note:查找的范围仅在路径名所在目录


路径名必须使用通配符,不过只有三种(*/?/[])。*代表所有文件,?代表一个字符,[]表示想要匹配的多个字符(比如,[0-9]表示匹配数字0-9)


查找当前目录下所有文件和目录:



note:由上图可知,仅提供路径并不会得到任何结果


查找当前目录下的txt文件:



已知测试集共有三层

查找第二层的所有txt文件:



函数iglob(pathname)功能和glob类似,只不过iglob返回的是迭代器。查看源码可知,两个函数其实一模一样

def glob(pathname):
    """Return a list of paths matching a pathname pattern.

    The pattern may contain simple shell-style wildcards a la
    fnmatch. However, unlike fnmatch, filenames starting with a
    dot are special cases that are not matched by '*' and '?'
    patterns.

    """
    return list(iglob(pathname))

###########################################################################33


本人fnmatch源码位置:/usr/lib/python2.7/fnmatch.py

共有四个函数:



函数filter:


返回列表names中符合模式pat的子集



函数fnmatch


测试name是否符合pat的模式

pat格式符合Unix文本类型:

*-表示所有

?-表示一个单一字符

[seq]-表示符合[]内的序列的字符

[!seq]-表示不符合[]内的序列的字符


查看源码知,该函数功能和fnmatcncase一样:

def fnmatch(name, pat):
    """Test whether FILENAME matches PATTERN.

    Patterns are Unix shell style:

    *       matches everything
    ?       matches any single character
    [seq]   matches any character in seq
    [!seq]  matches any char not in seq

    An initial period in FILENAME is not special.
    Both FILENAME and PATTERN are first case-normalized
    if the operating system requires it.
    If you don't want this, use fnmatchcase(FILENAME, PATTERN).
    """

    import os
    name = os.path.normcase(name)
    pat = os.path.normcase(pat)
    return fnmatchcase(name, pat)

函数fnmatchcase


没有规范化参数,仅仅判断文件名是否匹配模式符,包括大小写



note:参数均为单个字符串


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值