프로그래밍언어/파이썬[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