删除Django中的空目录

删除Django中的空目录,django,file,media,Django,File,Media,我有一个应用程序,可以让你上传文件到你的媒体文件夹。 我应用了删除方法,所以它既从数据库中删除文件,也从光盘中删除文件。我想删除所有的空目录,因此: 媒体\文档\2013\11\26 我要 媒体\ 前提是没有留下任何文件。 我在views.py中的删除方法如下所示: def delete(request): if request.method != 'POST': raise HTTP404 docId = request.POST.get('docfile',

我有一个应用程序,可以让你上传文件到你的媒体文件夹。 我应用了删除方法,所以它既从数据库中删除文件,也从光盘中删除文件。我想删除所有的空目录,因此:

媒体\文档\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语句之前: 在这里找到的代码:因此,我尝试添加:

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)
不幸的是,这没有任何作用。
如何删除这些空目录?

1-您的
媒体根目录是什么?这是您设置中的
/media/
?如果是这种情况,您可能需要执行一个
os.path.join
来提供
os.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)

在同一个文件(views.py)中,我的顶部有:PROJECT\u ROOT=os.path.abspath(os.path.dirname(file))MEDIA\u ROOT=os.path.join(PROJECT\u ROOT,'MEDIA'),但它不起作用,dirs仍然存在。有人能帮我吗?这让我发疯