[파이썬] shutil `shutil.rmtree()`의 `onerror` 콜백 사용하기
파이썬 shutil
모듈은 파일 및 디렉토리 작업을 위한 다양한 함수를 제공합니다. 그 중 하나인 shutil.rmtree()
함수는 디렉토리를 재귀적으로 삭제하는 기능을 제공합니다. 하지만 때로는 디렉토리 삭제 중에 오류가 발생할 수 있습니다. 이러한 오류를 처리하기 위해 onerror
콜백 함수를 사용할 수 있습니다.
onerror
콜백은 디렉토리 삭제 중에 발생하는 오류를 처리하는 사용자 정의 함수입니다. 이 콜백 함수는 다양한 오류 유형에 대한 처리 절차를 구현하는 데 사용됩니다. 오류 발생 시 콜백 함수는 오류 유형과 해당 디렉토리의 경로에 대한 정보를 전달받습니다.
아래는 shutil.rmtree()
의 onerror
콜백을 사용하는 예시 코드입니다:
import shutil
import os
def handle_error(func, path, exc_info):
"""
디렉토리 삭제 중 발생한 오류를 처리하는 콜백 함수
"""
# 오류 유형을 확인하고 처리 방법을 선택합니다
if isinstance(exc_info[1], PermissionError):
# 권한 오류일 경우 예외 처리 로직을 구현합니다
os.chmod(path, 0o777) # 예시로 권한을 변경하여 다시 시도합니다
func(path) # 다시 삭제를 시도합니다
else:
# 다른 유형의 오류일 경우 기본 오류 처리 동작을 수행합니다
raise exc_info[1]
# 디렉토리 삭제 시 오류 발생 시 `onerror` 콜백 사용
shutil.rmtree('/path/to/directory', onerror=handle_error)
위의 예시 코드에서는 handle_error()
라는 사용자 정의 함수를 정의하여 onerror
콜백으로 사용했습니다. 예시로 권한 오류일 경우에는 권한을 변경한 후 다시 삭제를 시도하도록 처리하고, 다른 유형의 오류일 경우에는 기본 오류 처리 동작을 수행합니다.
shutil.rmtree()
함수를 호출할 때 onerror
인자에 사용자 정의 콜백 함수를 넘겨주면 디렉토리 삭제 중에 발생하는 오류를 처리할 수 있습니다. 이를 통해 디렉토리 삭제 시 발생할 수 있는 다양한 오류에 유연하게 대응할 수 있습니다.