【发布时间】:2016-05-20 20:16:00
【问题描述】:
我需要递归处理目录树中的所有文件,但深度有限。
这意味着例如在当前目录和前两个子目录级别中查找文件,但不再进一步。在这种情况下,我必须处理例如./subdir1/subdir2/file,但不是./subdir1/subdir2/subdir3/file。
如何在 Python 3 中做到最好?
目前我使用os.walk 在这样的循环中处理无限深度的所有文件:
for root, dirnames, filenames in os.walk(args.directory):
for filename in filenames:
path = os.path.join(root, filename)
# do something with that file...
我可以想办法计算 root 中的目录分隔符 (/) 以确定当前文件的层次级别,如果该级别超过所需的最大值,则 break 循环。
当有大量子目录需要忽略时,我认为这种方法可能不安全并且效率可能非常低。这里的最佳方法是什么?
【问题讨论】:
标签: python python-3.x directory-structure subdirectory os.walk