我只有数千个文件夹的大型结构,但我只想将文件夹保持在前三个级别,并删除其余文件夹。我正在寻找一个递归的python脚本来做到这一点。任何帮助深表感谢。
答案 0 :(得分: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
答案 1 :(得分:0)
正确的方法是使用os.walk
,但这是一个便宜的答案:
>>> import os
>>> os.system('rm -rf */*/*/*/*')
>>> os.system('rmdir */*/*/*')
这将删除至少四个级别的所有文件,然后尝试删除至少三个级别的所有目录。由于上一个命令将删除其内容,rmdir
将成功(并抱怨它找到的所有非目录叶子。