파이썬으로 워드프레스 썸네일 파일 일괄삭제하기

반응성 이미지 크기 관련해서 이래저래 삽질하다가 일반 플러그인으로 이전 사이즈 섬네일 삭제 하면 10개 지우는데 3초이상씩 소요시간에 짜증나서 파이선으로 해당 폴더 돌면서 썸네일 파일만 싹다 지우는 거 작성해봄.
(원래는 그냥 find 명령으로 삭제 할려고 했는데 이윤 잘 모르겠지만 정규식 테스트 사이트나 파이선에서도 작동하는 정규식으로 파일 찾아서 삭제하는거 해도 하나도 못찾음)

import os
import re

def search(dirname):
    try:
        filenames = os.listdir(dirname)
        for filename in filenames:
            full_filename = os.path.join(dirname, filename)
            if os.path.isdir(full_filename):
                search(full_filename)
            else:
                regex = re.compile(r'^.+-\d{2,4}x\d{2,4}\..+')
                mo = regex.search(full_filename)
                if mo != None:
                    #print(mo.group())
                    if os.path.isfile(mo.group()):
                        filePath = mo.group(0)
                        #os.remove(filePath)
                        print("deleted: "+filePath)
                        
                #else:
                    #print("")
    except PermissionError:
        pass
search("/wp-content/uploads")

나중에 알았지만 워드프레스 이미지 추가할때 메타 정보로 썸네일 정보를 같이 기록하기 때문에 이렇게 지우면 DB에 쓰레기가 남는다는 단점이 있음 -_-;;;

하지만 썸네일 재생성할때 이미지 사이즈 변경하면 이전 이미지파일은 삭제 안되고 재생성하는 몇몇 플러그인이 있어서 어차피 재생성할때 DB 갱신되니 파일이라도 미리 지우면 나을듯.

os.remove 부분을 주석 처리 했는데 돌려보기 전에 경로라던지 잘 작동하는지 확인해보고 주석 지운담에 실행하라는 의미…

크리에이티브 커먼즈 라이선스Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

This site uses Akismet to reduce spam. Learn how your comment data is processed.