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

[파이썬][Error] 064. IsADirectoryError - [Errno 21] Is a directory: 'dir/'

about_IT 2025. 5. 29. 00:20
728x90

IsADirectoryError: [Errno 21] Is a directory: 'dir/' 오류는 디렉토리를 파일처럼 열려고 할 때 발생합니다. 파이썬의 open() 함수는 파일을 대상으로 하는데, 디렉토리 경로를 인자로 넘길 경우 이 오류가 발생합니다.

이 오류는 파일 이름과 디렉토리 이름이 혼동되었거나, 경로를 잘못 설정한 경우 자주 발생합니다. 특히 자동화 스크립트나 사용자 입력 기반 파일 접근 시 파일이 아닌 경로를 지정할 가능성이 있습니다.

● 오류 발생 예시

with open("dir/", "r") as f:
    content = f.read()

이 경우 dir/은 디렉토리이므로 open() 함수 호출 시 IsADirectoryError가 발생합니다.

IsADirectoryError: [Errno 21] Is a directory: 'dir/'

● 해결 방법

  • os.path.isfile() 또는 Path.is_file()로 파일 여부 확인
  • 파일과 디렉토리를 명확히 구분하여 처리
  • 사용자 입력이나 자동화 경로 지정 시 유효성 검사 추가

● 예시 코드

from pathlib import Path
p = Path("dir/")
if p.is_file():
    with p.open("r") as f:
        data = f.read()
else:
    print("지정한 경로는 파일이 아닙니다.")

● 자주 하는 실수

  • 디렉토리 경로를 파일로 착각
  • 파일 리스트를 순회하면서 디렉토리를 필터링하지 않음
  • 사용자 입력 경로를 검증 없이 바로 open()에 전달

● 결론

IsADirectoryError - Is a directory 오류는 디렉토리를 파일처럼 열려고 할 때 발생합니다. 경로가 파일인지 디렉토리인지 사전 검사하는 습관은 파일 처리 오류를 방지하는 데 매우 중요합니다.

728x90