递归删除大型文件夹结构中第三级以下的文件夹

2024-04-26 05:18:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个只有数千个文件夹的大结构,但是我只对保持在前三级的文件夹感兴趣,并删除其余的。我正在寻找一个递归的python脚本来实现这一点。任何帮助都是非常感谢的。在


Tags: 脚本文件夹结构感兴趣
2条回答

正确的方法是使用os.walk,但这里有一个廉价的答案:

>>> import os
>>> os.system('rm -rf */*/*/*/*')
>>> os.system('rmdir */*/*/*')

这将删除中至少四个级别的所有文件,然后尝试删除中至少三个级别的所有目录。由于前一个命令将删除它们的内容,rmdir将成功(并抱怨它找到的所有非目录叶)。在

未经测试,但使用os.walk()可能会显示如下:

import os
import shutil

BASE = '.'
for root, dirs, files in os.walk(BASE):
    n = 0
    head = root
    while head and head != BASE:
        head, _ = os.path.split(head)
        n += 1
    if n == 3:
        for dir in dirs:
            shutil.rmtree(os.path.join(root, dir))
        del dirs[:]      # clear dirs so os.walk() doesn't look for subdirectories

相关问题 更多 >