페싱코드 파이썬 코드

파이썬으로 오래된 파일과 폴더를 찾고 지우는 방법

정과장하루살이 2025. 3. 8. 14:22
반응형

파이썬을 이용해서 오래된 파일과 폴더를 찾고, 그리고 삭제하는 방법입니다.

업무를 하다보면, 특히 제조업에서는 생산을 하면서 파일들이 계속 누적되게 되는데

이때 정기적으로 오래된 파일을 삭제해야 용량관리에 도움이 됩니다.

 

아래 파이썬 코드를 참고해서 각자 업무 스타일에 맞게 만들어보세요.

 

import os
import time
import shutil

# 특정 폴더 경로
folder_path = "/path/to/your/folder"  # 여기에 폴더 경로를 입력하세요.

# 100일을 초 단위로 변환 (100일 = 100 * 24 * 60 * 60)
threshold = 100 * 24 * 60 * 60
current_time = time.time()

# 파일과 폴더를 순회하면서 100일 이상 된 항목 찾기
for root, dirs, files in os.walk(folder_path, topdown=False):
    # 파일 삭제
    for file_name in files:
        file_path = os.path.join(root, file_name)
        file_age = current_time - os.path.getmtime(file_path)
        if file_age > threshold:
            print(f"파일 삭제: {file_path}")
            os.remove(file_path)
    
    # 폴더 삭제 (빈 폴더만 삭제 가능, 비어 있지 않으면 shutil.rmtree 사용)
    for dir_name in dirs:
        dir_path = os.path.join(root, dir_name)
        dir_age = current_time - os.path.getmtime(dir_path)
        if dir_age > threshold:
            print(f"폴더 삭제: {dir_path}")
            try:
                os.rmdir(dir_path)  # 빈 폴더만 삭제
            except OSError:
                print(f"빈 폴더가 아니어서 삭제할 수 없습니다: {dir_path}")
                shutil.rmtree(dir_path)  # 폴더와 그 안의 파일을 모두 삭제

 

위 코드에 대해 추가적인 부연설명 입니다.

 

1. os.walk()는 지정된 폴더 경로 내의 모든 파일과 폴더를 재귀적으로 순회합니다.
2. os.path.getmtime()은 파일의 마지막 수정 시간을 반환합니다.
3. time.time()은 현재 시간을 초 단위로 반환합니다.
4. threshold는 100일을 초 단위로 계산한 값입니다.


파일이나 폴더가 100일 이상 되었으면, 파일은 os.remove()로 삭제하고, 폴더는 os.rmdir()로 삭제합니다. 만약 폴더가 비어 있지 않다면 shutil.rmtree()를 사용해 폴더와 그 안의 모든 내용을 삭제합니다.

 

반응형