如何在os.walk()中排除目录?

时间:2019-04-09 07:52:11

标签: python python-3.x python-2.7

我想在我的计算机驱动器D到Z中搜索所有vhdx文件,并计算它们的总量。但是我想排除目录。如何更改我的代码?

  getState(outlet) {
    return outlet.activatedRouteData.state;
  }
SELECT *, DATEADD(DAY, -1, LEAD (StartDate, 1) OVER (PARTITION BY ID ORDER BY StartDate)) AS ENDDATE
FROM #Temp

2 个答案:

答案 0 :(得分:2)

这是我在os.walk上进行迭代时通常排除目录的方式:

for root, dirs, files in os.walk(drv):
    dirs[:] = [d for d in dirs if d not in extf]

这里的重点是使用slice-assignmentdirs[:] = ...)来就地更改dirs(将dirs重新分配到新创建的列表)。

如果您想稍微加快速度,我建议将extf变成set

extf = set(('$RECYCLE.BIN','System Volume Information'))

答案 1 :(得分:0)

适合您的示例:

from pathlib import Path
i = 0
az = lambda: (chr(i)+":\\" for i in range(ord("D"), ord("Z") + 1))

for d in az():
    p = Path(d)
    if not p.exists():
        continue
    i += len(list(p.rglob('*.vhdx')))
print("total vhdx files:", i)