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)
您不必自己探索子文件夹,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)