반응형
질문
Python에서 print
를 사용한 다음 예시를 고려해보세요:
>>> for i in range(4): print('.')
.
.
.
.
>>> print('.', '.', '.', '.')
. . . .
각 값 사이에 새 줄 또는 공백이 추가됩니다. 출력이 ....
이 되도록 이를 피하는 방법은 무엇인가요? 다른 말로, 표준 출력 스트림에 문자열을 "추가"하는 방법은 무엇인가요?
답변
Python 3에서는 print
함수의 sep=
및 end=
매개변수를 사용할 수 있습니다:
문자열 끝에 개행을 추가하지 않으려면:
print('.', end='')
출력하려는 모든 함수 인수 사이에 공백을 추가하지 않으려면:
print('a', 'b', 'c', sep='')
어떤 문자열이든 두 매개변수에 모두 전달할 수 있으며, 동시에 두 매개변수를 사용할 수 있습니다.
버퍼링 문제가 발생하는 경우 flush=True
키워드 인수를 추가하여 출력을 플러시 할 수 있습니다:
print('.', end='', flush=True)
Python 2.6 및 2.7
Python 2.6부터는 __future__
모듈을 사용하여 Python 3에서 print
함수를 가져올 수 있습니다:
from __future__ import print_function
이렇게 하면 Python 3 솔루션을 사용할 수 있습니다.
그러나 Python 2에서 __future__
에서 가져온 print
함수 버전에서는 flush
키워드가 사용 불가능합니다. 이것은 Python 3에서만 작동합니다. 더 구체적으로 3.3 이상에서만 작동합니다. 이전 버전에서는 수동으로 sys.stdout.flush()
를 호출하여 플러시해야합니다. 또한 이러한 가져오기를 수행하는 파일에서 다른 모든 print 문을 다시 작성해야합니다.
또는 sys.stdout.write()
를 사용할 수 있습니다.
import sys
sys.stdout.write('.')
stdout
가 즉시 플러시되도록 하려면 다음을 호출해야 할 수도 있습니다.
sys.stdout.flush()
반응형
댓글