줄 바꿈 없이 계속 출력

이게 C 언어에서도 가능할텐데..
왜 모르고 살았는지.. 이해가 안 가는 기능을 하나 찾았다.

개행문자를 출력하면 줄이 바뀐다.
윈도우와 리눅스는 개행문자를 표기하는 방법이 틀린데..
윈도우는 \r\n을 쓰고, 리눅스는 \n만 사용한다.

\r은 CR(Carriage Return)이라 부르고, 입력 위치를 줄의 처음으로 옮긴다.
\n은 LF(Line Feed)라 부르고, 입력 위치를 다음 줄로 옮긴다.
옛날 타자기를 본따서 입력 장치를 만들었기 때문에 생긴 현상이다.

표기하는 방법은 틀리지만
리눅스나 윈도우에서 모두, 입력 위치를 다음 줄의 첫 번째로 옮기는 역할을 한다.
리눅스 파일을 윈도우에서 열 때
줄 바꿈에 문제가 발생하는 경우가 있는데, 이것 때문에 그렇다.


아래 코드를 구동시키면,
숫자가 오른쪽으로 이동하면서 출력되는 것이 아니라
같은 자리에서 계속해서 바뀌는 것을 볼 수 있다.
놀라움의 비밀은 \r에 있다. 줄 바꿈 없이 줄의 처음으로 이동하기 때문에 가능하다.
터미널에서 파일을 다운로드할 때,
같은 위치에 다운로드한 파일의 크기를 계속해서 수정할 때 주로 사용된다.


import sys
import time

for i in range(10):
print('{}\r'.format(i), end='')
sys.stdout.flush()
time.sleep(1)

sys.stdout.flush 함수는 호출하지 않아도 된다.
미뤄두었다 출력하는 것이 아니라
바로 출력하라는 코드인데.. 여기서는 중요하지 않다.

'파이썬' 카테고리의 다른 글

import 정리  (0) 2017.05.01
현재 파일에 정의된 main 함수 호출  (0) 2017.04.19
numba - 성능 업!  (0) 2017.04.18
pprint : 쉽고 예쁘게 출력하기  (0) 2017.04.09
enum 클래스  (0) 2017.04.09