删除Django中的空目录

时间:2013-11-26 10:04:51

标签: django file media

我有一个应用程序,可让您将文件上传到MEDIA文件夹。 我已应用了删除方法,因此它会从数据库以及光盘中删除文件。我想删除所有空目录,而不是:

  

媒体\文件\ 2013 \ 11 \ 26

我会

  

媒体\

前提是没有文件。 我在views.py中的删除方法如下所示:

def delete(request):
    if request.method != 'POST':
        raise HTTP404

    docId = request.POST.get('docfile', None)
    docToDel = get_object_or_404(Document, pk = docId)
    docToDel.docfile.delete()
    docToDel.delete()

    return HttpResponseRedirect(reverse('myapp.views.list'))

我找到了Python代码,我尝试在return语句之前添加它: 代码在此处找到:http://deathofagremmie.com/archive/2013/05/1/所以,我尝试添加:

empty_dirs = []

for root, dirs, files in os.walk(MEDIA_ROOT):
    if not len(dirs) and not len(files):
        empty_dirs.append(root)

for path in empty_dirs:
    os.removedirs(path)

遗憾的是,什么也没做。 如何删除那些空的DIR?

1 个答案:

答案 0 :(得分:2)

1-您的MEDIA_ROOT是什么?这是您设置中的/media/吗?如果是这种情况,您可能需要os.path.joinos.walk提供媒体根目录的绝对路径,而不是相对路径。

2-获得绝对路径后,执行此操作以删除空目录

import os
for root, dirs, files in os.walk(MEDIA_ROOT_ABS_PATH):
    for d in dirs:
          dir = os.path.join(root, d)
          # check if dir is empty
          if not os.listdir(dir):
              os.rmdir(dir)