【发布时间】:2012-06-12 00:01:53
【问题描述】:
os.walk(startdir) 中的 root、dir、file 循环通过这些步骤工作?
for root in os.walk(startdir)
for dir in root
for files in dir
-
获取起始目录的根目录:C:\dir1\dir2\startdir
-
获取 C:\dir1\dir2\startdir 中的文件夹并返回文件夹列表“dirlist”
-
在第一个 dirlist 项中获取文件,并将文件列表“filelist”作为文件列表列表的第一项返回。
-
移动到 dirlist 中的第二项并返回此文件夹“filelist2”中的文件列表作为文件列表列表的第二项。等等
-
移动到文件夹树中的下一个根目录并从 2. 等开始
对吗?还是首先获取所有根目录,然后是所有目录,然后是所有文件?
【问题讨论】:
-
我喜欢使用这个生成器来循环所有文件:
get_files = lambda path: (os.path.join(root, file) for root, dirs, files in os.walk(path) for file in files)。然后你可以使用for file in get_files(path): ...