python批量删除django不需要的图片代码

批量生产文章图片的时候,会遇到这么一种情况,就是文章生成后,发现有重复生产的,或者因远程原因我们发布失败,这就造成了我们的图片多余了。所以我们要批量删除这些图片。

这些图片都是随机名称,几千几万的,如果人工操作,那就累死人了,所以我们需要代码来处理一下下面上代码

views.py

def getimg(request):
    print('link_article=========>',request.GET)
    try:
        start=int(request.GET['start'])
        end=int(request.GET['end'])
    except:
        return JsonResponse({'status':400,'msg':'“start”和“end”获取失败'},safe=False,json_dumps_params={'ensure_ascii': False})
    if start<=end:
        obj=models.Article.objects.filter(id__gte=start,id__lte=end).order_by('id')
    elif start>end:
        return JsonResponse({'status':400,'msg':'“start”不能小于“end'},json_dumps_params={'ensure_ascii': False})
    img_all=[]
    for item in obj:
        img_list=re.findall('<img[^>]*src="/media/soogorfac/([^"]*?)"',item.Content)
        if img_list:
            for img in img_list:
                img_all.append(img)
    with open('allimg.text','w') as f1:
        pass
    for i in img_all:
        with open('allimg.text','a') as f1:
            f1.write(str(i)+'\n')            


    
    return JsonResponse({'status':200})

api/urls.py

from django.urls import path

from article import  views as article

urlpatterns = [
...
    path('getimg',article.getimg),
    
    
]

然后我们直接浏览器访问api:/api/getimg?start=3318&end=5442

这样我们会在django程序下,如果用soogorcms就是在soogor文件下生成一个叫allimg.text的文件

这里就是全部的图片名称了

然后我们python处理一下

text.py

import os
alllins=[]
with open(r'C:\Users\Administrator\Desktop\allimg.txt','r') as f1:
    alllins=f1.readlines()
path=r'I:\采集\第一个库_东西很多\soogormedia\media\soogorfac'
for root,dirs,files in os.walk(path,topdown=True):
    for name in files:
        print(name,end='==>')
        if name not in str(alllins):
            print('False')
            delpath=os.path.join(path,name)
            os.remove(delpath)
        print('\n')
THE END