删除Django中的空目录
我有一个应用程序,可以让你上传文件到你的媒体文件夹。 我应用了删除方法,所以它既从数据库中删除文件,也从光盘中删除文件。我想删除所有的空目录,因此: 媒体\文档\2013\11\26 我要 媒体\ 前提是没有留下任何文件。 我在删除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',
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仍然存在。有人能帮我吗?这让我发疯