[파이썬] shutil `shutil.ExecError`: 명령 실행에 실패한 경우의 예외 처리

파이썬에서 파일 및 디렉토리 작업을 위한 표준 라이브러리인 shutil은 많이 사용되는 도구 중 하나입니다. shutil 모듈은 파일 복사, 이동, 삭제 등 다양한 작업을 수행할 수 있습니다. 하지만 때로는 shutil 모듈의 명령이 예외를 발생시킬 수 있습니다. 이번 포스트에서는 shutil.ExecError 예외 처리에 대해 알아보도록 하겠습니다.

shutil 모듈과 명령 실행

shutil 모듈은 파일 및 디렉토리 작업을 위한 함수들을 제공합니다. 예를 들어, shutil.copy() 함수는 파일을 복사하고, shutil.move() 함수는 파일을 이동시키는 등의 작업을 수행합니다.

import shutil

# 파일 복사
shutil.copy("source_file.txt", "destination_folder")

# 파일 이동
shutil.move("source_file.txt", "destination_folder")

이러한 명령들은 정상적으로 실행될 수 있지만, 종종 예외를 발생시킬 수도 있습니다. 대부분의 경우, shutil.Error 예외가 발생하는데, 이는 다수의 명령이 실패한 경우에 일어납니다. 그러나 특정 명령이 실패한 경우에는 shutil.ExecError 예외가 발생합니다.

shutil.ExecError 예외 처리

shutil.ExecError 예외는 특정 명령이 실패한 경우에 발생합니다. 이 예외를 처리하는 것은 중요한데, 작업이 실패한 이유를 파악하고 적절한 조치를 취할 수 있기 때문입니다.

다음은 shutil.move() 명령이 실패할 경우의 예외 처리 방법입니다.

import shutil

try:
    shutil.move("source_file.txt", "destination_folder")
except shutil.ExecError as e:
    print(f"명령 실행에 실패했습니다: {e}")

위의 예시 코드에서는 try-except 문을 사용하여 shutil.move() 명령을 실행하고, 만약 해당 명령이 실패한 경우 shutil.ExecError 예외가 발생합니다. 이때 예외 객체는 e 변수에 할당되고, 예외 메시지를 출력합니다.

실행 중인 명령의 실패 원인과 에러 코드 등의 정보는 e 객체의 속성으로 얻을 수 있습니다. 이를 통해 예외 처리를 보다 세밀하게 제어할 수 있습니다.

마무리

shutil 모듈은 파일 및 디렉토리 작업에 유용한 기능들을 제공하지만, 일부 명령들은 예외를 발생시킬 수 있습니다. shutil.ExecError 예외를 처리하여 명령 실행 실패의 원인을 파악하고 적절한 조치를 취할 수 있습니다. 예외 처리를 통해 안정적인 파일 및 디렉토리 작업을 수행할 수 있습니다.