errno — 표준 errno 시스템 심볼

errno — 표준 errno 시스템 심볼

이 모듈은 표준 errno 시스템 심볼을 제공해요. 각 심볼의 값은 대응하는 정수 값이에요. 이름과 설명은 linux/include/errno.h에서 가져왔는데, 그쪽이 가장 포괄적이기 때문이에요.

출처: Python 표준 라이브러리

본문

errno.errorcode

errno 값을 기반 시스템의 문자열 이름으로 매핑하는 딕셔너리예요. 예를 들어 errno.errorcode[errno.EPERM]'EPERM'으로 매핑돼요.

숫자 오류 코드를 오류 메시지로 바꾸려면 os.strerror()를 쓰세요.

아래 목록 중 현재 플랫폼에서 쓰이지 않는 심볼은 모듈에서 정의되지 않아요. 실제로 정의된 심볼 목록은 errno.errorcode.keys()로 확인할 수 있어요.

각 errno 심볼은 대부분 표준 Python 예외에 매핑돼요. 표로 정리한 핵심 심볼들을 볼게요.

파일·디렉터리 관련

기호 의미 매핑 예외
errno.EPERM 작업이 허용되지 않음 PermissionError
errno.ENOENT 그런 파일·디렉터리가 없음 FileNotFoundError
errno.ESRCH 그런 프로세스가 없음 ProcessLookupError
errno.EINTR 시스템 호출이 중단됨 InterruptedError
errno.EIO I/O 오류
errno.ENXIO 그런 장치·주소가 없음
errno.E2BIG 인자 목록이 너무 김
errno.ENOEXEC 실행 형식 오류
errno.EBADF 잘못된 파일 번호
errno.ECHILD 자식 프로세스가 없음 ChildProcessError
errno.EAGAIN 다시 시도 BlockingIOError
errno.ENOMEM 메모리 부족
errno.EACCES 권한 거부 PermissionError
errno.EFAULT 잘못된 주소
errno.ENOTBLK 블록 장치 필요
errno.EBUSY 장치·리소스가 사용 중
errno.EEXIST 파일이 이미 존재 FileExistsError
errno.EXDEV 교차 장치 링크
errno.ENODEV 그런 장치 없음
errno.ENOTDIR 디렉터리가 아님 NotADirectoryError
errno.EISDIR 디렉터리임 IsADirectoryError
errno.EINVAL 잘못된 인자
errno.ENFILE 파일 테이블 오버플로
errno.EMFILE 열린 파일이 너무 많음
errno.ENOTTY 타자기가 아님
errno.ETXTBSY 텍스트 파일이 사용 중
errno.EFBIG 파일이 너무 큼
errno.ENOSPC 장치에 공간 없음
errno.ESPIPE 잘못된 시크
errno.EROFS 읽기 전용 파일시스템
errno.EMLINK 링크가 너무 많음
errno.EPIPE 파이프가 깨짐 BrokenPipeError
errno.EDOM 수학 인자가 함수 정의역을 벗어남
errno.ERANGE 수학 결과를 표현할 수 없음
errno.EDEADLK 리소스 교착이 발생할 것
errno.ENAMETOOLONG 파일명이 너무 김
errno.ENOLCK 사용 가능한 레코드 잠금 없음
errno.ENOSYS 구현되지 않은 함수
errno.ENOTEMPTY 디렉터리가 비어 있지 않음
errno.ELOOP 심볼릭 링크가 너무 많음
errno.EWOULDBLOCK 작업이 블록될 것 BlockingIOError
errno.ENOMSG 원하는 타입의 메시지 없음
errno.EIDRM 식별자가 제거됨
errno.EDEADLOCK 파일 잠금 교착 오류

메시지·스트림·교환 관련

기호 의미 매핑 예외
errno.ECHRNG 채널 번호가 범위를 벗어남
errno.EL2NSYNC 레벨 2가 동기화되지 않음
errno.EL3HLT 레벨 3이 정지됨
errno.EL3RST 레벨 3이 리셋됨
errno.ELNRNG 링크 번호가 범위를 벗어남
errno.EUNATCH 프로토콜 드라이버가 연결 안 됨
errno.ENOCSI CSI 구조 없음
errno.EL2HLT 레벨 2가 정지됨
errno.EBADE 잘못된 교환
errno.EBADR 잘못된 요청 디스크립터
errno.EXFULL 교환이 가득 참
errno.ENOANO anode 없음
errno.EBADRQC 잘못된 요청 코드
errno.EBADSLT 잘못된 슬롯
errno.EBFONT 잘못된 폰트 파일 형식
errno.ENOSTR 장치가 스트림이 아님
errno.ENODATA 사용 가능한 데이터 없음
errno.ETIME 타이머 만료
errno.ENOSR 스트림 리소스 부족
errno.ENONET 머신이 네트워크에 없음
errno.ENOPKG 패키지가 설치되지 않음
errno.EREMOTE 객체가 원격임
errno.ENOLINK 링크가 끊김
errno.EADV 광고 오류
errno.ESRMNT srmount 오류
errno.ECOMM 송신 중 통신 오류
errno.EPROTO 프로토콜 오류
errno.EMULTIHOP 멀티홉 시도
errno.EDOTDOT RFS 특정 오류
errno.EBADMSG 데이터 메시지가 아님
errno.EOVERFLOW 정의된 데이터 타입에 값이 너무 큼
errno.ENOTUNIQ 네트워크에서 이름이 고유하지 않음
errno.EBADFD 잘못된 상태의 파일 디스크립터
errno.EREMCHG 원격 주소가 변경됨
errno.ELIBACC 필요한 공유 라이브러리에 접근할 수 없음
errno.ELIBBAD 손상된 공유 라이브러리에 접근
errno.ELIBSCN a.out의 .lib 섹션이 손상됨
errno.ELIBMAX 공유 라이브러리를 너무 많이 링크 시도
errno.ELIBEXEC 공유 라이브러리를 직접 실행 불가
errno.EILSEQ 잘못된 바이트 시퀀스
errno.ERESTART 중단된 시스템 호출을 다시 시작해야 함
errno.ESTRPIPE 스트림 파이프 오류
errno.EUSERS 사용자가 너무 많음

소켓·네트워크 관련

기호 의미 매핑 예외
errno.ENOTSOCK 소켓이 아닌데 소켓 연산
errno.EDESTADDRREQ 대상 주소 필요
errno.EMSGSIZE 메시지가 너무 김
errno.EPROTOTYPE 소켓에 대해 프로토콜 타입이 틀림
errno.ENOPROTOOPT 프로토콜을 사용할 수 없음
errno.EPROTONOSUPPORT 프로토콜이 지원되지 않음
errno.ESOCKTNOSUPPORT 소켓 타입이 지원되지 않음
errno.EOPNOTSUPP 전송 엔드포인트에서 지원되지 않는 연산
errno.ENOTSUP 지원되지 않는 연산 (버전 3.2에 추가됨)
errno.EPFNOSUPPORT 프로토콜 패밀리가 지원되지 않음
errno.EAFNOSUPPORT 프로토콜이 주소 패밀리를 지원하지 않음
errno.EADDRINUSE 주소가 이미 사용 중
errno.EADDRNOTAVAIL 요청한 주소를 할당할 수 없음
errno.ENETDOWN 네트워크가 다운됨
errno.ENETUNREACH 네트워크에 도달 불가
errno.ENETRESET 리셋으로 연결이 끊김
errno.ECONNABORTED 소프트웨어가 연결 중단을 일으킴 ConnectionAbortedError
errno.ECONNRESET 피어가 연결을 리셋 ConnectionResetError
errno.ENOBUFS 버퍼 공간 없음
errno.EISCONN 전송 엔드포인트가 이미 연결됨
errno.ENOTCONN 전송 엔드포인트가 연결되지 않음
errno.ESHUTDOWN 전송 엔드포인트 종료 후 전송 불가 BrokenPipeError
errno.ETOOMANYREFS 참조가 너무 많아 스플라이스 불가
errno.ETIMEDOUT 연결 시간 초과 TimeoutError
errno.ECONNREFUSED 연결이 거부됨 ConnectionRefusedError
errno.EHOSTDOWN 호스트가 다운됨
errno.EHOSTUNREACH 호스트로의 경로 없음
errno.EHWPOISON 메모리 페이지에 하드웨어 오류 (버전 3.14에 추가됨)
errno.EALREADY 작업이 이미 진행 중 BlockingIOError
errno.EINPROGRESS 작업이 현재 진행 중 BlockingIOError

파일시스템·특수 시스템 관련

기호 의미 매핑 예외
errno.ESTALE 오래된 NFS 파일 핸들
errno.EUCLEAN 구조를 정리해야 함
errno.ENOTNAM XENIX 명명 타입 파일이 아님
errno.ENAVAIL 사용 가능한 XENIX 세마포어 없음
errno.EISNAM 명명 타입 파일임
errno.EREMOTEIO 원격 I/O 오류
errno.EDQUOT 쿼터 초과
errno.EQFULL 인터페이스 출력 큐가 가득 참 (버전 3.11에 추가됨)
errno.ENOMEDIUM 미디어를 찾지 못함
errno.EMEDIUMTYPE 잘못된 미디어 타입
errno.ENOKEY 필요한 키를 사용할 수 없음
errno.EKEYEXPIRED 키가 만료됨
errno.EKEYREVOKED 키가 폐기됨
errno.EKEYREJECTED 서비스가 키를 거부함
errno.ERFKILL RF-kill로 인해 작업 불가
errno.ELOCKUNMAPPED 잠긴 잠금이 매핑 해제됨
errno.ENOTACTIVE 시설이 활성화되지 않음

macOS·인증·RPC 관련

기호 의미 매핑 예외
errno.EAUTH 인증 오류 (버전 3.2에 추가됨)
errno.EBADARCH 실행 파일의 CPU 타입이 잘못됨 (3.2)
errno.EBADEXEC 잘못된 실행 파일(또는 공유 라이브러리) (3.2)
errno.EBADMACHO 잘못된 형태의 Mach-o 파일 (3.2)
errno.EDEVERR 장치 오류 (3.2)
errno.EFTYPE 부적절한 파일 타입·형식 (3.2)
errno.ENEEDAUTH 인증자 필요 (3.2)
errno.ENOATTR 속성을 찾지 못함 (3.2)
errno.ENOPOLICY 정책을 찾지 못함 (3.2)
errno.EPROCLIM 프로세스가 너무 많음 (3.2)
errno.EPROCUNAVAIL 프로그램에 잘못된 프로시저 (3.2)
errno.EPROGMISMATCH 프로그램 버전이 틀림 (3.2)
errno.EPROGUNAVAIL RPC 프로그램을 사용할 수 없음 (3.2)
errno.EPWROFF 장치 전원이 꺼짐 (3.2)
errno.EBADRPC RPC 구조가 잘못됨 (3.2)
errno.ERPCMISMATCH RPC 버전이 틀림 (3.2)
errno.ESHLIBVERS 공유 라이브러리 버전 불일치 (3.2)
errno.ENOTCAPABLE 기능이 부족함 PermissionError (WASI, FreeBSD, 3.11.1)
errno.ECANCELED 작업이 취소됨 (3.2)
errno.EOWNERDEAD 소유자 사망 (3.2)
errno.ENOTRECOVERABLE 상태를 복구할 수 없음 (3.2)