프로그래밍언어/파이썬[Error]

[파이썬][Error] 102. IsADirectoryError - [Errno 21] Is a directory

about_IT 2025. 6. 1. 00:48
728x90

IsADirectoryError: [Errno 21] Is a directory 오류는 디렉터리를 파일처럼 열려고 시도할 때 발생하는 예외입니다. 이 오류는 파일을 열거나 읽는 과정에서 지정한 경로가 실제로는 디렉터리일 경우에 발생합니다.

예를 들어 open("/some/folder/", "r")처럼 디렉터리 경로를 파일처럼 열려고 하면 이 오류가 발생하게 됩니다.

● 오류 발생 예시

with open("./my_folder/", "r") as f:
    data = f.read()

여기서 ./my_folder/는 디렉터리이기 때문에 오류가 발생합니다.

● 주요 원인

  • 디렉터리 경로를 파일 경로로 오인
  • os.listdir()과 open() 사용 시 경로 구분 실수
  • 자동화된 파일 처리 루틴에서 디렉터리 포함

● 해결 방법

  • os.path.isfile(path)로 파일 여부 확인
  • 디렉터리 경로와 파일 경로를 명확히 구분
  • 파일 처리 전 예외 처리 구문 추가

● 예시 코드 (예외 방지)

import os

path = "./my_folder/"
if os.path.isfile(path):
    with open(path, "r") as f:
        print(f.read())
else:
    print("파일이 아닌 디렉터리입니다.")

● 결론

IsADirectoryError는 파일처럼 열려고 한 대상이 실제로는 디렉터리일 때 발생합니다. 파일 작업 전 경로의 타입을 확인하거나, 예외 처리를 통해 안정적인 파일 처리가 가능하도록 해야 합니다.

728x90