在 Python 中使用 os.walk 查找大于 300MB 的文件?

Dan*_*Dan 2 python for-loop if-statement

我编写了这段代码来遍历目录并查找大于 300MB 的文件。

但是,我得到了很多重复值,并且文件之间的重复数量各不相同。任何人都可以解释这一点或为我改进代码吗?

import os

path = 'C:\\Users\\brentond\\Desktop\\Lower Thames Crossing'
for foldername, subfolders, filenames in os.walk(path):
    for subfolder in subfolders:
        for filename in filenames:
            if os.path.getsize(os.path.join(foldername, filename))>300000000:
                print(foldername + '\\' + filename)
Run Code Online (Sandbox Code Playgroud)

Thi*_*lle 6

您不必自己探索子文件夹,walk会为您完成。

从文档:

os.walk(top, topdown=True, onerror=None, followlinks=False)

通过顶向下或自底向上遍历树来生成目录树中的文件名。对于以目录 top 为根的树中的每个目录(包括 top 本身),它产生一个 3 元组(目录路径、目录名、文件名)。

(强调我的)

所以,只要这样做:

import os

path = 'C:\\Users\\brentond\\Desktop\\Lower Thames Crossing'
for foldername, subfolders, filenames in os.walk(path):
    for filename in filenames:
        if os.path.getsize(os.path.join(foldername, filename))>300000000:
            print(foldername + '\\' + filename)
Run Code Online (Sandbox Code Playgroud)