[Python] sys 모듈 sys.stdin.read(), sys.stdin.readline()

2024. 11. 24. 16:35·CodingTest

sys 모듈

Python의 표준 라이브러리

파이썬 인터프리터와 관련된 다양한 기능을 제공함

입출력, 명령행 인자 처리, 인터프리터 종료, 시스템 정보 등을 다룰 수 있음

 

 

sys 모듈의 주요 기능

1. 입출력 관련

- sys.stdin : 표준 입력 (키보드나 파일 입력)

- sys.stdout: 표준 출력 (콘솔 출력)

- sys.stderr: 표준 에러 출력 (에러 메시지 출력)

 

2. 프로그램 종료

- sys.exit() 사용해 프로그램 종료

 

3. 명령행 인자 

- sys.argv 사용하여 명령행에서 전달된 인자를 처리할 수 있음

 

간단 예제

import sys

# 1. 명령행 인자
print(sys.argv)  # 실행 시 전달된 명령행 인자를 리스트로 출력

# 2. 표준 입력
data = sys.stdin.read()  # 한꺼번에 입력 받기

# 3. 표준 출력
sys.stdout.write("Hello, World!\n")

# 4. 프로그램 종료
sys.exit(0)  # 정상 종료

 

왜 sys를 사용할까

1. 효율적인 대량 데이터 처리 

- sys.stdin.read와 sys.stdout.write 는 반복적인 I/O 연산을 줄이고, 더 빠르게 데이터를 처리함

 

- 입출력 버퍼를 더 세밀하게 제어할 수 있음

 

파이썬의 기본 입출력 기능 보완해서 빠르고 효율적인 대량 데이터 처리를 가능하게 함

 

 

sys.stdin.readline()과 sys.stdin.read()의 차이

이 둘은 sys.stdin에서 데이터 읽는 데 사용되지만, 

읽어오는 방식과 사용 목적에서 차이남

 

sys.stdin.readline()

- 한 줄씩 입력을 읽어옴

- \n을 포함한 문자열을 반환함

- 반복문으로 한 줄씩 데이터 처리할 때

- 읽어온 데이터는 문자열로 반환되고, 필요하면 .strip()이나 .split()으로 가공해야함!

import sys

# 한 줄씩 입력 받기
line = sys.stdin.readline()  # 예: "3 4\n"
numbers = line.split()  # 공백 기준으로 나눔
print(numbers)  # 출력: ['3', '4']

 

장점

- 데이터 한 줄씩 처리하기 때문에 메모리 효율적임 

- 입력 데이터 크기가 크더라도 반복문으로 하나씩 처리할 수 있어 적합함

 

sys.stdin.read()

전체 입력을 한꺼번에 읽어옴

입력의 끝(EOF)까지 모든 데이터를 하나의 문자열로 반환함

대량 입력을 한번에 처리할 때

- 데이터가 많을 경우, 메모리에 한꺼번에 올려야 하므로 메모리 사용량이 커질 수 있음 주의!

import sys

# 전체 입력 받기
data = sys.stdin.read()  # 예: "3 4\n5 6\n"
lines = data.splitlines()  # 줄 단위로 나누기
print(lines)  # 출력: ['3 4', '5 6']

 

장점
- 대량 데이터 처리에 유리, 반복문 없이도 모든 데이터 처리할 수 있음! 

- 여러 줄 입력을 한꺼번에 읽고 처리해야 하는 경우 적합

 


🤔

최근 봤던 코테에서 sys 모듈이 임포트 되어있던것 같다

그리고 입력 데이터(, 테스트 케이스)가 많았다....

백준처럼 백지에 코드를 쓰는게 아니였던 코테라 더 혼란스러운 

이런 기본 공부가 참 .. 반성하자

많이 부족하지만 극복..해야죠

'CodingTest' 카테고리의 다른 글

[백준/Python] 10950번 A+B -3, sys 모듈  (0) 2024.11.24
[백준/Python] 10872번 팩토리얼, Python의 math 모듈  (1) 2024.11.18
[백준] 10869번: 사칙연산  (1) 2024.10.07
[프로그래머스] 짝지어 제거하기 - 12973  (0) 2024.07.02
'CodingTest' 카테고리의 다른 글
  • [백준/Python] 10950번 A+B -3, sys 모듈
  • [백준/Python] 10872번 팩토리얼, Python의 math 모듈
  • [백준] 10869번: 사칙연산
  • [프로그래머스] 짝지어 제거하기 - 12973
콩챠무
콩챠무
개발 메모장
  • 콩챠무
    콩챠무 개발
    콩챠무
  • 전체
    오늘
    어제
    • 분류 전체보기 (14)
      • Tip (2)
      • Spring (0)
      • ReactNative (1)
      • GIS (1)
      • 알고리즘 (0)
      • AI (1)
      • CodingTest (5)
      • CSS (0)
      • React (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    백준
    백엔드
    리액트
    SYS
    파이썬
    코딩테스트
    리액트책
    오류
    오블완
    리액트책추천
    스프링
    타입스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
콩챠무
[Python] sys 모듈 sys.stdin.read(), sys.stdin.readline()
상단으로

티스토리툴바