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