Code前端首页关于Code前端联系我们

Python批量删除Django不需要的图片标签

terry 2年前 (2023-09-24) 阅读数 66 #后端开发

当你批量生产文章图片时,你会面临这样的情况。文章生成后发现有重复,或者由于远程原因未能发布,导致我们的图片变得多余。所以我们要分组删除这些图像。

这些照片都是随机命名的,有上万张。如果手动完成的话会比较繁琐,所以我们需要代码来处理下面的代码

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[^>]*]*?)"',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')

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门