首页 > 解决方案 > 遍历多个文件夹以在python的多个foder中搜索相同的文件

问题描述

在多个文件夹中搜索同一个文件

我已经尝试过 os.walk(path) 但我没有遍历嵌套文件夹

        for current_root, folders, file_names in os.walk(self.path, topdown=True):
            for i in folders:
                print i
                for filename in file_names:
                    count+= 1
                    file_path = os.path.join(current_root + '\\' + filename)
                    #print file_path
                    self.location_dictionary[file_path] = filename

在我的代码中,它将打印所有文件夹,但它不会递归地进入嵌套文件夹例如:我有 subdir,subdir1,subdir2 并且在 subdir 我有另一个名为 abc 的目录在 subdir 和 abc 都包含相同的文件名我想阅读那个文件

标签: python-2.7

解决方案


os.walk不能那样工作。

对于current_root它遍历的每一个,它都提供直接在它下面的目录和文件的列表。

你正在嵌套循环,这确实......好吧我不知道......

在这里你不需要文件夹(所以只需静音参数)。current_root已经包含您的文件的该信息:

for current_root, _, file_names in os.walk(self.path, topdown=True):
    for filename in file_names:
        count+= 1
        file_path = os.path.join(current_root,filename)
        #print file_path
        self.location_dictionary[file_path] = filename

撇开:创建一个字典,其中完整文件作为键,文件名作为值看起来,嗯,不是你想要的(相同的信息可以存储在setor中list,并且os.path.basename可以用于计算文件名。也许它是相反的(文件名 => 完整路径),前提是没有重复的文件名。


推荐阅读