根据指定文件名格式,筛选符合条件的文件

import os
import fnmatch
"""根据指定文件名格式,筛选符合条件的文件,把文件的路径加上文件名一起返回"""


def is_file_match(filename, patterns):
    """
    判断符合指定模式的文件名
    :param filename: 文件名
    :param patterns: 文件名模式的列表
    :return: True False
    """
    # print(patterns)
    for pattern in patterns:
        # 遍历指定文件模式
        # print(pattern)
        if fnmatch.fnmatch(filename, pattern):

            # 利用fnmatch方法判断文件名是否符合指定模式
            return True
    return False


def find_specific_files(root, patterns=['*'], exclude_dirs=[]):
    """
    # 查找符合指定文件模式的文件的函数
    :param root: 需要查找文件的路径
    :param patterns: 指定文件名模式列表
    :param exclude_dirs: 不包含路径
    :return:
    """
    for root, list_dirnames, list_filenames in os.walk(root):
        # os.walk方法返回三元组(指定路径名,目录列表,文件列表)
        for filename in list_filenames:
            # 遍历文件列表
            if is_file_match(filename, patterns):
                # 调用文件判断方法
                yield os.path.join(root, filename)
                for d in exclude_dirs:
                    if d in list_dirnames:
                        list_dirnames.remove(d)


if __name__ == '__main__':
    patterns = ['*']
    # print(is_file_match('a.txt', patterns))
    ret = find_specific_files('.', patterns)
    for i in ret:
        print(i)
    #     print(i, '---------->', os.path.getsize(i))
    # files = {name: os.path.getsize(name) for name in ret}
    # result = sorted(files.items(), key=lambda d: d[1], reverse=True)
    # print(result)
    # for i, j in enumerate(result, 1):
    #     print(i,j[0],j[1])

 

转载于:https://www.cnblogs.com/superniao/p/10587810.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值