0

我只有数千个文件夹的大型结构,但是我只对将文件夹保留在前三个级别感兴趣,然后删除其余文件夹。我正在寻找一个递归python脚本来做到这一点。任何帮助深表感谢。

4

2 回答 2

1

未经测试,但它可能看起来像这样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
于 2012-07-06T22:24:37.013 回答
0

正确的方法是使用os.walk,但这是一个便宜的答案:

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

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

于 2012-07-06T22:23:00.733 回答