我有一个应用程序,可让您将文件上传到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?
答案 0 :(得分:2)
1-您的MEDIA_ROOT
是什么?这是您设置中的/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)