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

반응성 이미지 크기 관련해서 이래저래 삽질하다가 일반 플러그인으로 이전 사이즈 섬네일 삭제 하면 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 부분을 주석 처리 했는데 돌려보기 전에 경로라던지 잘 작동하는지 확인해보고 주석 지운담에 실행하라는 의미…


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다