파일과 하위 폴더를 모두 포함하는 디렉터리를 한 번에 삭제하고 싶다면, Python 표준 라이브러리의 shutil 모듈을 사용하는 것이 가장 간단하고 확실한 방법입니다. shutil.rmtree() 함수를 호출하기만 하면 지정한 폴더(디렉터리 트리) 전체가 재귀적으로 제거됩니다.
shutil.rmtree() 기본 사용법
>>> import shutil
>>> shutil.rmtree('my_folder')
위 코드를 실행하면 my_folder 폴더와 그 안에 들어 있는 모든 파일, 하위 폴더가 함께 삭제됩니다.
주요 매개변수
- path: 삭제할 디렉터리의 경로
- ignore_errors: True로 설정하면 삭제 도중 발생하는 오류를 무시하고 계속 진행 (기본값은 False)
- onerror: 오류가 발생했을 때 호출될 콜백 함수를 지정하여 세부적인 예외 처리 가능
오류를 무시하고 삭제하기
>>> import shutil
>>> shutil.rmtree('my_folder', ignore_errors=True)
경로가 존재하지 않거나 권한 문제로 삭제가 중단될 가능성이 있다면 위처럼 ignore_errors=True 옵션을 활용하면 됩니다.
주의 사항
rmtree()로 삭제된 데이터는 휴지통으로 이동하지 않고 영구적으로 사라지므로, 실행 전에 대상 경로를 반드시 확인해야 합니다. 특히 Windows 환경에서는 읽기 전용 파일 때문에 오류가 발생할 수 있는데, 이 경우 onerror 콜백에서 해당 파일의 권한을 변경한 뒤 삭제를 재시도하도록 처리하면 해결할 수 있습니다.