Python에서는 os 모듈이 제공하는 함수를 활용해 단일 파일이나 빈 폴더를 간단하게 삭제할 수 있습니다. 이 글에서는 파일 하나를 삭제하는 기본 방법부터 디렉토리 전체를 한 번에 정리하는 다양한 기법까지 살펴보겠습니다.
1. 단일 파일 삭제하기
예를 들어 my_file.txt라는 파일을 삭제하고 싶다면 다음과 같이 작성합니다.
>>> import os
>>> os.remove('my_file.txt')
os.remove()의 인자에는 반드시 절대 경로 또는 상대 경로를 지정해야 합니다. 파일이 존재하지 않으면 FileNotFoundError가 발생하므로, 필요하다면 os.path.exists()로 존재 여부를 먼저 확인하는 것이 안전합니다.
2. 여러 파일 삭제하기
여러 개의 파일을 한 번에 삭제하려면 파일 목록을 순회하면서 위 함수를 반복 호출하면 됩니다.
폴더를 삭제한 뒤 다시 생성하는 방법
삭제 대상 파일들이 특정 폴더 안에 모두 들어 있다면, 해당 폴더를 통째로 지운 후 새로 생성하는 방식도 유용합니다.
>>> import shutil
>>> shutil.rmtree('my_folder')
>>> import os
>>> os.makedirs('my_folder')
shutil.rmtree()는 하위 파일과 서브디렉토리까지 포함해 폴더 전체를 삭제하며, os.makedirs()는 빈 폴더를 다시 만들어 줍니다.
3. os.walk()로 재귀적으로 삭제하기
폴더 자체는 유지하면서 그 안의 파일만 모두 지우고 싶다면 os.walk()를 활용할 수 있습니다.
import os, re, os.path
mypath = "my_folder"
for root, dirs, files in os.walk(mypath):
for file in files:
os.remove(os.path.join(root, file))
이 방법을 사용하면 디렉토리 트리 구조는 그대로 유지되면서 파일만 깨끗하게 삭제됩니다. os.path.join()으로 루트 경로와 파일명을 결합해야 올바른 경로가 생성된다는 점에 유의하세요.
마무리 및 주의 사항
파일 삭제 작업은 되돌릴 수 없으므로 실행 전에 삭제 대상 경로를 반드시 확인해야 합니다. 중요한 데이터가 담긴 디렉토리라면 백업을 먼저 수행한 뒤 위의 방법들을 적용하는 것이 좋습니다. 상황에 따라 단일 파일 삭제에는 os.remove(), 폴더 전체 삭제에는 shutil.rmtree(), 구조 보존형 정리에는 os.walk()를 활용하면 됩니다.