파이썬의 sys
모듈을 사용한 stdout/stderr와 간단한 표준입출력과 다양한 출력 포맷에 대해 공부한 부분을 정리해보려 한다.
프로그램과 그 환경 사이에 연결되어있는 입출력 통로(pipe)가 존재하는데, 일반적으로 프로그램이 실행 될 때, 3개의 통로가 열린다. 입력을 위한
입력 스트림
, 출력을 담당하는출력 스트림
, 에러를 담당하는에러 스트림
이렇게 3개의 스트림을 표준 스트림 즉,표준입출력
이라 한다.
표준 C 실행 라이브러리의<stdio.h>
헤더에서 각각stdin
,stdout
,stderr
로 정의된다.
파이썬에서는 표준입출력을 사용하기 위해sys
모듈을 사용한다.
sys
모듈을 임포트한다.import sys
print("Python", "Java", file=sys.stdout) print("Python", "Java", file=sys.stderr)
입력을 받기 위해서는
input
메서드를 사용한다.
입력으로 들어온 값은 문자열 타입을 갖는다.answer = input("아무 값이나 입력하세요 : ") # 10 입력 print("입력하신 값은 " + answer + "입니다") print(type(answer)) # <class "str"> answer = 10 print(type(answer)) # <class "int">
메서드를 사용하여 출력을 핸들링 할 수 있다.
ljust()
: 왼쪽 정렬 후 인자만큼 칸을 할당
rjust()
: 오른쪽 정렬 후 인자만큼 칸을 할당
sep()
: 변수 간격 핸들링 가능 (기본 값:" "
)
end()
: 출력문 마지막 핸들링 가능 (기본 값:\n
)
zfill()
: 숫자출력 빈칸을0
으로 할당scores = {"수학":0, "영어":50, "코딩":100} for subject, score in scores.items(): print(subject.ljust(8), str(score).rjust(4), sep=":") # 수학 : 0 # 영어 : 50 # 코딩 : 100 print("대기번호 : " + str(6).zfill(3)) # 006
숫자형 출력에 대해서 다양한 포맷이 가능하다.
기본 형태
print("{0:abcd,}".format())
a
: 빈칸을 어떤 값으로 출력할지 정한다.
b
: 왼쪽 정렬 또는 오른쪽 정렬을 한다.
c
: 숫자를 음수, 양수로 출력한다.
d
: 출력문의 크기를 할당한다.
,
: 숫자 3자리 간격마다 콤마를 출력한다.# 빈 자리는 빈공간으로 두고, 오른쪽 정렬을 하되, 총 10자리 공간을 확보 print("{0: >10}".format(500)) # 500 # 양수일 땐 +로 표시, 음수일 땐 -로 표시 print("{0: >+10}".format(500)) # +500 print("{0: >+10}".format(-500)) # -500 # 왼쪽 정렬하고, 빈칸으로 _로 채움 print("{0:_<10}".format(500)) # 500_______ # 3자리 마다 콤마를 찍어주기 print("{0:,}".format(100000000000)) # 100,000,000,000 # 3자리 마다 콤마를 찍어주기, +- 부호도 붙이기 print("{0:+,}".format(100000000000)) # +100,000,000,000 print("{0:+,}".format(-100000000000)) # -100,000,000,000 # 3자리 마다 콤마를 찍어주기, 부호도 붙이고, 자릿수 확보하기 # 돈이 많으면 행복하니까 빈 자리는 ^ 로 채워주기 print("{0:^<+30,}".format(100000000000)) # +100,000,000,000^^^^^^^^^^^^^^
실수의 소수점 갯수도 핸들링이 가능하다.
# 소수점 출력 print("{0:f}".format(5/3)) # 소수점 특정 자리수 까지만 표시 print("{0:.2f}".format(5/3))
나도코딩 유튜브
Python - 공식문서
점프투파이썬 - WikiDocs
모다일 SW 개발자 kibua20 - 블로그