搜索目录中文件列表的最快方法

时间:2016-02-26 01:11:18

标签: python python-2.7

给定一个文件名列表,我想创建这些文件的完整路径,如果它们存在于给定目录或它的子目录中。现在我使用这段代码

def construct_path(file_list, directory):
    file_path_list = []
    for name in file_list:
        for dir, subdir, filenames in os.walk(directory):
            if name in filenames:
                file_path_list.append(os.path.join(dir, name))

    return file_path_list

所以这里正在为列表中的每个文件抓取目录。是否有更快/更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以移除file_list上的循环并从此列表中删除找到的文件,这样您就可以在找到所有文件后返回结果:

def construct_path(file_list, directory):
    file_path_list = []
    for dir, subdir, files in os.walk(directory):
        for name in files:
            if name in file_list:
                file_path_list.append(os.path.join(dir, name))
                file_list.remove(name)
            if (len(file_list)==0): return file_path_list
    return file_path_list