Python_获取指定目录下的所有文件

import os


def find_files(search_path, include_str=None, filter_strs=None):
    """查找指定目录下所有的文件。
    :param search_path: 查找的目录路径
    :param include_str: 获取包含字符串的名称
    :param filter_strs: 过滤包含字符串的名称
    """
    if filter_strs is None:
        filter_strs = []

    files = []
    # 获取路径下所有文件
    names = os.listdir(search_path)
    for name in names:
        path = os.path.abspath(os.path.join(search_path, name))
        # 若是目录,则递归
        if os.path.isdir(path):
            files += find_files(path, include_str=include_str, filter_strs=filter_strs)
        else:
            # 如果文件名称不包含指定字符串则,则跳过
            if include_str is not None and include_str not in name:
                continue

            for filter_str in filter_strs:
                # 如果文件名称包含filter_strs中的字符,则跳过
                if filter_str in name:
                    break
            else:
                # 未break,说明文件名称中不包含filter_strs中的字符
                files.append(path)
    return files


if __name__ == '__main__':
    # 获取全部文件
    f = find_files("./test")
    print(f)

    # 获取包含指定字符的文件
    f = find_files("./test", include_str=".py")
    print(f)

    # 获取不包含指定字符的文件
    f = find_files("./test", filter_strs=[".pyc", "__init__"])
    print(f)

    # 获取包含指定字符且不包含某些指定字符的文件
    f = find_files("./test", include_str=".py", filter_strs=[".pyc", "__init__"])
    print(f)

文件目录结构

 执行结果

 

posted @ 2021-02-21 17:36  码上测  阅读(2907)  评论(0编辑  收藏  举报