파이썬 프로그래밍을 하다보니 STDERR에 관한 내용이 계속 나오길래 STDERR에 대한 내용 정리와 Python 2.7과 3에서 어떻게 다른지 확인을 해보고 이렇게 정리한다.
표준 에러(STDERR)는 에러 발생시 콘솔에 에러 메시지를 띄울 때 사용하는 방법이다. 이 방법을 이용하면 빨간줄로 어디가 어떻게 틀렸다는 내용은 안 나오고 내가 지정한 문구가 출력되게 된다.
# 여기서는 스프레드시트에 저장할 수 있는 열의 수 = hard limit을 65536으로 설정한다. 최대 65536행까지 사용한다는 뜻.
if row > 65535:
print('Hit limit of # of rows in one sheet (65535)', file=sys.stderr)
위의 코드에서 스프레드시트에 저장할 수 있는 열의 수를 넘어가면 콘솔창에 빨간 글씨들이 좍좍 출력이 될텐데 file = sys.stderr 를 설정하게 되면 오류 발생시
Hit limit of # of rows in one sheet (65535)
문구가 출력되는 형식이다.
그럼 Python 2.7과 3에서 STDERR를 어떻게 표현하는지 보자.
============================ Python ============================
import sys
#1. Python 2.7에서만 가능
print >> sys.stderr, 'spam'
#2. Python 2.7, 3 둘 다 가능
sys.stderr.write('spam\n')
#3. Python 3에서만 가능
from __future__ import print_function
def warning(*objs):
print("WARNING: ", *objs, file=sys.stderr)
============================ Python ============================
만약 파이썬 버전을 고민하지 않고 쓴다면 2번이 가장 좋아보인다.
가장 직관적이고 오해를 할 부분이 없기 때문이다.
물론 3번의 print(*, file = sys.stderr)도 직관적이므로 좋다고 생각한다. 하지만 print() 형태가 2.7에서는 쓸 수 없으므로 주의가 필요하겠다.
ref.
#ashcode / stderr 출력에 대해서 질문드립니다.
- https://hashcode.co.kr/questions/183/stderr-%EC%B6%9C%EB%A0%A5%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%A7%88%EB%AC%B8%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4
'기타 자료들' 카테고리의 다른 글
[JSON] 자주 사용하는 JSON 라이브러리 (0) | 2018.05.19 |
---|---|
[JAVA] 자바에서 객체 불변성을 확인하기 위한 .hashCode(), System.identityHashCode() 값 비교 (0) | 2018.05.12 |
[Python] 특별한 의미의 네이밍을 할 때 _(언더바), __(더블 언더바) 차이점 (0) | 2018.05.09 |
[기초] 컨벤션(Convention) (0) | 2018.05.09 |
[기초] 네임 맹글링(Name Mangling) (0) | 2018.05.09 |