[python] Standard Stream , Diagnosing stream problems
A A

목차

    728x90

    1. 표준 스트림(Standard Stream)

    파이썬은 기본적으로 아래와 같은 세 가지 표준 스트림을 제공한다

    Stream 역할 설명
    sys.stdin 표준 입력 사용자 입력을 받을 때 사용
    (ex. input() 내부적으로 사용)
    sys.stdout 표준 출력 출력 데이터를 화면에 표시할 때 사용
    (ex. print() 내부적으로 사용)
    sys.stderr 표준 에러 출력 에러 메시지 출력 전용 스트림
    에러 로깅이나 디버깅에 사용
    import sys
    
    # 입력 받기
    # data = sys.stdin.readline()
    
    # 출력하기
    sys.stdout.write("표준 출력\n")
    
    # 에러 출력
    sys.stderr.write("표준 에러 출력\n")
    

     

    2. 예외 발생 시 e.errno 로 에러 진단

    파일 입출력 등에서 예외가 발생하면, OSError 혹은 IOError 계열의 예외에 errno 속성이 포함됨.

    import errno
    
    try:
        with open("없는파일.txt") as f:
            data = f.read()
    except OSError as e:
        print(f"오류 코드: {e.errno}")
        print(f"오류 메시지: {e.strerror}")
    

    자주 사용하는 errno 목록

    errno 상수 이름 설명
    2 errno.ENOENT 파일이나 디렉토리가 없음
    13 errno.EACCES 접근 권한 없음
    9 errno.EBADF 잘못된 파일 디스크립터 (이미 닫힌 파일 등)
    27 errno.EFBIG 파일 크기가 시스템 허용 최대 크기를 초과
    23 errno.ENFILE 시스템 전체 파일 디스크립터 개수 초과
    17 errno.EEXIST 파일이 이미 존재함
    21 errno.EISDIR 디렉토리인데 파일처럼 열려 함
    28 errno.ENOSPC 디스크 공간 부족

    3. 요약

    • sys.stdin, sys.stdout, sys.stderr텍스트 스트림으로써 입출력의 기본 통로.
    • sys.stderr는 에러 출력 전용으로, 로그 구분 등에 유용.
    • errno 값은 예외가 발생했을 때, 문제의 원인을 정확히 파악하는 데 도움을 줌.
    Copyright 2024. GRAVITY all rights reserved