반응형
줄 바꿈 없이 print 문을 출력하기 위한 캐리지 리턴을 이해합니다.
목차
개발 의도
import time
# 계산 과정을 보여주는 예제
for i in range(1, 11):
# 계산 중인 진행 상태 출력
print(f"진행 중: {i * 10}%")
time.sleep(1) # 지연 시간 추가 (계산 시간이 길다고 가정)
print("\n완료!")
# 출력값: 진행 중: 10% / ... / 진행 중: 100% / 완료!
- 위와 같이 반복문 내에서 print 함수를 사용합니다.
문제 상황
- 반복문 내에서 print 함수를 사용할 경우
터미널 혹은 콘솔 화면이 지나치게 복잡해질 수 있습니다,
문제 원인 파악
- 캐리지 리턴(carriage return)을 의미하는 특수 문자 '\r'를 사용하여,
줄 바꿈 없이 print문을 출력할 수 있습니다.
캐리지 리턴(carriage return)을 통한 문제 해결
import time
# 계산 과정을 보여주는 예제
for i in range(1, 11):
# 계산 중인 진행 상태 출력
print(f"진행 중: {i * 10}%", end='\r')
time.sleep(1) # 지연 시간 추가 (계산 시간이 길다고 가정)
print("\n완료!")
# 출력값: 진행 중: 100% / 완료!
- print문 내에서 end='\r'를 사용하면 커서가 줄을 바꾸지 않고, 해당 줄의 처음으로 이동합니다.
이 후 다음 출력 내용이 기존 내용을 덮어쓰게 됩니다.
캐리지 리턴(carriage return) 특성
- 일반적으로 print문 기본 설정이 end='\n' 이므로,
print문이 출력되면 커서가 다음 줄로 자동으로 이동합니다.
- end='\r'를 사용할 경우, 커서가 다음 줄로 이동하지 않고
해당 줄의 처음으로 이동하게 됩니다.
print("이전값 내용을 출력합니다.", end='\r')
print("현재값 출력", end='\r')
# 현재값 출력을 출력합니다.
- 캐리지 리턴은 커서를 해당 줄의 처음으로 이동하는 개념이므로,
만약 현재 출력값이 이전 출력값보다 짧다면
위 코드와 같이 이전 출력값이 현재 출력값에 남아있게 됩니다.
아래 코드로 디버깅 완료
import time
# 계산 과정을 보여주는 예제
for i in range(1, 11):
# 계산 중인 진행 상태 출력
print(f"진행 중: {i * 10}%", end='\r')
time.sleep(1) # 지연 시간 추가 (계산 시간이 길다고 가정)
print("\n완료!")
# 출력값: 진행 중: 100% / 완료!
- 위와 같이 캐리지 리턴(carriage return) 특성을 통해
터미널 혹은 콘솔 화면을 깔끔하게 사용할 수 있습니다.
반응형
'개발 > 오늘의 개발일지' 카테고리의 다른 글
[Python] 반복문에서 요소와 인덱스 활용을 위한 enumerate 이해하기 (1) | 2024.11.19 |
---|---|
[Python] 빈 배열 변수에 배열 쌓는 방법 이해하기 (0) | 2024.11.18 |
[Python] 스레드 종료를 기다리기 위한 join 이해하기 (0) | 2024.11.16 |
[Python] 메인 프로그램과 함께 종료되는 데몬 스레드 이해하기 (0) | 2024.11.15 |
[Python] 하나의 변수에 여러 스레드가 접근하는 것을 막기 위한 Lock 이해하기 (2) | 2024.11.14 |