【发布时间】:2012-07-07 09:22:08
【问题描述】:
我只有数千个文件夹的大型结构,但我只对将文件夹保留在前三个级别感兴趣,并删除其余文件夹。我正在寻找一个递归 python 脚本来执行此操作。任何帮助深表感谢。
【问题讨论】:
标签: python recursion directory
我只有数千个文件夹的大型结构,但我只对将文件夹保留在前三个级别感兴趣,并删除其余文件夹。我正在寻找一个递归 python 脚本来执行此操作。任何帮助深表感谢。
【问题讨论】:
标签: python recursion directory
未经测试,但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
【讨论】:
正确的方法是使用os.walk,但这里有一个便宜的答案:
>>> import os
>>> os.system('rm -rf */*/*/*/*')
>>> os.system('rmdir */*/*/*')
这将删除至少四层的所有文件,然后尝试删除所有根目录至少三层的目录。由于前面的命令将删除它们的内容,rmdir 将成功(并抱怨所有非-目录离开它找到的)。
【讨论】: