如何跳过某些os.walk()目录并以特殊方式处理一些剩余的目录?

时间:2019-02-25 19:08:04

标签: python os.walk

为清楚起见,进行了编辑:我正在尝试获取某些文件夹和子文件夹中某种文件类型的url。我有一个清单,名为bannedDir,在漫游过程中我永远都不想输入。如果出现bannedDir中的任何单词,我想完全跳过这些目录,我相信我已经做到了。我有一个名为flaggedDir的正则表达式列表。如果flaggedDir中的任何单词都在根目录中,则我想对该根下的所有内容进行处理。

首先要在该根目录下执行的操作是排除在excludedDir中的目录中进行搜索,该目录由bannedDir中的所有条目和flaggedDir中的某些条目组成。然后,我想从其余文件夹中获取所有xls文件或fileType的mtime。然后从我称为iniList的mtime列表中存储最大mtime。

下面的当前代码。

for root, dirs, files in os.walk(topDir, topdown=True):
dirs[:] = [d for d in dirs if d not in bannedDir]    
   if flaggedDir.search(root) is not None:
    dirs[:] = [d for d in dirs if d not in excludedDir]
       for name in files:
           if name.lower().endswith(fileTypes):
               lastModif = [];
               timeIndex = [];
               fileLocation = os.path.join(root, name);
               time = os.path.getmtime(fileLocation);
               timeIndex.append(time);                             
               lastModif.append([fileLocation,time]);
       if len(lastModif) > 0:
        iniList.append(max(lastModif, key=lambda item: item[1]));

例如,

topDir = [C:\\Test\]
fileTypes = '.xls'
bannedDir = [a,b]
flaggedDir = [c,d]
excludedDir = [a,b,c]

dir a -- file 1.xls,
dir b -- file 5.exe,
dir c -- file 2.exe,
dir d -- file 3.xls, file 4.exe, file 5.xls

我应该只能获取file3.xls和5.xls文件,因为目录a,b和c应该被跳过了。然后我应该只获取文件3.xls,因为3的mtime为5000,而文件5的mtime为2000。我的问题是,我似乎在代码中遍历某些目录两次。我也没有得到每个子目录的最大值。我该如何解决?

0 个答案:

没有答案