[파이썬] shutil `shutil.onerror()`: 오류 발생 시 콜백 호출하기

오류 처리는 프로그램을 개발하는 과정에서 중요한 부분입니다. 이에 따라 오류가 발생했을 때 적절한 조치를 취할 수 있어야 합니다. Python의 내장 모듈인 shutil은 파일 및 디렉토리 작업을 수행하는 데 사용되며, 오류 발생 시 콜백 함수를 호출하는 기능을 제공합니다. 오류 처리를 보다 세밀하게 제어하고 싶은 경우에 유용하게 사용할 수 있습니다.

shutil.onerror() 함수의 기능

shutil 모듈은 파일 복사, 이동, 삭제 등의 작업을 수행하는 함수를 제공합니다. 이러한 작업 중에 오류가 발생하면 기본적으로 shutil 모듈은 이를 무시하고 넘어가게 됩니다. 하지만 shutil.onerror() 함수를 사용하면 오류 발생 시 호출되는 콜백 함수를 정의할 수 있습니다. 이 콜백 함수에서는 오류 처리에 대한 커스텀 동작을 수행할 수 있습니다.

shutil.onerror()의 사용법

shutil.onerror() 함수는 다음과 같은 형식을 갖습니다:

def callback_func(src, dst, exception):
    # 오류 처리 코드 작성

shutil.onerror(callback_func)

위의 예시에서 callback_func는 오류 발생 시 호출될 콜백 함수입니다. 콜백 함수는 세 개의 인자를 받아야 합니다:

여기서 콜백 함수 callback_func 내에서는 오류에 따른 커스텀 동작을 수행할 수 있습니다. 예를 들어, 오류가 발생했을 때 오류 메시지를 출력하거나 특정 로그 파일에 기록하는 등의 작업을 할 수 있습니다.

shutil.onerror() 사용 예시

다음은 shutil.onerror() 함수의 사용 예시입니다.

import shutil

def callback_func(src, dst, exception):
    print(f"오류 발생: {exception} - {src} -> {dst}")

shutil.onerror(callback_func)

try:
    shutil.copy("source.txt", "destination.txt")
except Exception as e:
    print(f"파일 복사 중 오류 발생: {e}")

위의 예시에서는 shutil.copy() 함수를 이용해 “source.txt” 파일을 “destination.txt”로 복사하려고 합니다. 오류가 발생하면 callback_func 함수가 호출되어 오류 메시지를 출력합니다. 이를 통해 오류가 발생한 경로와 발생한 예외 오류 메시지를 확인할 수 있습니다.

정리

shutil 모듈의 shutil.onerror() 함수를 사용하면 파일 및 디렉토리 작업 중 발생하는 오류에 대한 커스텀 처리를 할 수 있습니다. 이를 통해 오류 발생 시 특정 동작을 수행하거나 오류 메시지를 자세히 확인할 수 있습니다. 이러한 기능은 프로그램의 안정성과 신뢰성을 높이는 데 도움이 될 수 있습니다.